-
Arrays
- Fixed-size container storing elements of the same type.
- Operations: Traversal, Insertion, Deletion, Searching.
-
Linked Lists
- Sequence of nodes where each node points to the next.
- Types: Singly Linked List, Doubly Linked List, Circular Linked List.
- Operations: Insertion, Deletion, Searching.
-
Stacks
- LIFO (Last In, First Out) data structure.
- Operations: Push, Pop, Peek.
- Use Cases: Expression evaluation, Backtracking.
-
Queues
- FIFO (First In, First Out) data structure.
- Types: Simple Queue, Circular Queue, Priority Queue, Deque.
- Operations: Enqueue, Dequeue, Peek.
- Use Cases: Task scheduling, Buffer management.
-
Trees
- Hierarchical data structure with nodes.
- Types: Binary Tree, Binary Search Tree (BST), AVL Tree, Red-Black Tree, B-Trees, Heap.
- Operations: Insertion, Deletion, Traversal (Inorder, Preorder, Postorder).
-
Graphs
- Set of nodes (vertices) connected by edges.
- Types: Directed, Undirected, Weighted, Unweighted.
- Representations: Adjacency List, Adjacency Matrix.
- Operations: Traversal (DFS, BFS), Shortest Path, Minimum Spanning Tree.
-
Hash Tables
- Key-value data structure with fast access times.
- Operations: Insert, Search, Delete.
- Collision Handling: Chaining, Open Addressing.
-
Searching Algorithms
- Linear Search
- Binary Search
- Depth-First Search (DFS)
- Breadth-First Search (BFS)
-
Sorting Algorithms
- Bubble Sort
- Selection Sort
- Insertion Sort
- Merge Sort
- Quick Sort
- Heap Sort
- Counting Sort
- Radix Sort
-
Recursion
- Method where a function calls itself.
- Use Cases: Factorial, Fibonacci, Towers of Hanoi, Backtracking.
-
Dynamic Programming
- Optimization technique for solving complex problems by breaking them down.
- Examples: Fibonacci Sequence, Knapsack Problem, Longest Common Subsequence (LCS), Matrix Chain Multiplication.
-
Greedy Algorithms
- Makes optimal choices at each step.
- Examples: Fractional Knapsack, Activity Selection, Dijkstra's Algorithm for shortest path.
-
Backtracking
- Builds solutions incrementally and abandons them if they aren’t feasible.
- Examples: N-Queens, Sudoku Solver, Subset Sum Problem.
-
Divide and Conquer
- Divides the problem into subproblems, solves them independently, and combines them.
- Examples: Merge Sort, Quick Sort, Binary Search, Closest Pair of Points.
- Two-Pointer Technique - Efficiently process elements in pairs or subsets of an array.
- Sliding Window Technique - Optimized way to find a subarray or substring with specific properties.
- Binary Search on Answer - Solving optimization problems by binary search on a sorted range.