Skip to content

A comprehensive collection of Java implementations for common data structures and algorithms including Trees, Graphs, Heaps, LinkedLists, HashMaps, Tries, and various searching/sorting techniques. Features utility classes for random data generation, comparator implementations, and practical problem-solving examples with time complexity analysis.

Notifications You must be signed in to change notification settings

shanks-d-fury/Java-DSA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Java Data Structures & Algorithms

A comprehensive collection of data structures and algorithms implemented in Java, designed for learning, practice, and interview preparation.

📚 Data Structures

Trees

  • Binary Trees: Implementation with preorder, inorder, postorder, and level-order traversals
  • Binary Search Trees: Building, searching, deletion, and validation
  • Tree Operations: Height calculation, diameter finding, lowest common ancestor, kth ancestor

Graphs

  • Edge and Vertex representation
  • Graph Algorithms:
    • Dijkstra's Algorithm for shortest paths
    • Prim's Algorithm for minimum spanning trees
    • Bellman-Ford Algorithm for detecting negative cycles
    • Topological Sorting for directed acyclic graphs

LinkedLists

  • Node implementation with operations
  • Operations: Reversing, cycle detection and removal
  • Pattern operations: Delete N nodes after M nodes
  • Palindrome checking in linked lists

Heaps

  • Priority Queue implementation
  • Operations for finding maximum element in k-sized subarrays

Tries

  • Character-based tree for efficient string operations
  • Prefix searching and insertion
  • Word finding algorithms

Arrays & ArrayLists

  • Stock buying and selling algorithms
  • 2D array operations
  • Random array generation utilities

🧮 Algorithms

Searching & Sorting

  • Binary Search implementations
  • Various sorting techniques

Dynamic Programming

  • Solutions to common DP problems

Bit Manipulation

  • Operations: Get, Set, Clear, and Update bits
  • Bit counting and power of 2 checking
  • Fast exponentiation using bit operations

Backtracking

  • Solutions to classic backtracking problems

Greedy Algorithms

  • Optimization problems with greedy approaches

🛠️ Utilities

Random Data Generation

  • Methods for generating test data:
    • Integer arrays (1D and 2D)
    • String arrays with case control
    • Character arrays
    • Boolean arrays
    • Specialized data structures

Testing Framework

  • LeetCodeTestBench for rapid algorithm testing
  • Performance timing measurements

📋 Usage

The code is organized into individual class files for each data structure or algorithm type. Each file contains multiple implementations and example usage in their respective main() methods.

🎯 Learning Resources

This repository is designed to complement standard algorithm and data structure courses. Each implementation includes detailed comments explaining the time and space complexity analysis.

About

A comprehensive collection of Java implementations for common data structures and algorithms including Trees, Graphs, Heaps, LinkedLists, HashMaps, Tries, and various searching/sorting techniques. Features utility classes for random data generation, comparator implementations, and practical problem-solving examples with time complexity analysis.

Topics

Resources

Stars

Watchers

Forks

Languages