- Arrays — strengths, weaknesses, and use cases
- Linked List.
- Stack — LIFO operations and applications
- Queue — FIFO operations and circular queue
- Deque — double-ended queue
- Hash Table — collisions and hash functions
- Priority Queue and Heap basics
- Binary Search Tree (BST) fundamentals
- Graph representation (adjacency list vs adjacency matrix)
- Basic String Handling (substrings, concatenation, hashing intro)
- Recursion — concept and common pitfalls
- Sorting basics: Bubble Sort, Insertion Sort, Selection Sort
- Merge Sort and Quick Sort — divide and conquer
- Binary Search and variations
- Breadth-First Search (BFS) on graphs
- Depth-First Search (DFS) on graphs
- Dijkstra’s Algorithm (introductory version with simple heap)
- Greedy Algorithm basics with examples
- Dynamic Programming introduction (Fibonacci, Knapsack)
- Backtracking basics (N-Queens, subsets, permutations)
- Skip List and its applications in fast search
- Treap (Tree + Heap hybrid)
- Splay Tree — self-adjusting trees
- Red-Black Tree — used in standard libraries
- AVL Tree — comparison with Red-Black Tree
- B-Tree and its role in databases
- B+ Tree in relational database indexing
- Segment Tree — efficient range queries
- Fenwick Tree (Binary Indexed Tree)
- Interval Tree — overlapping intervals
- KD-Tree for multidimensional search
- R-Tree for spatial data indexing
- Quad Tree and image processing
- Octree in 3D graphics
- Cartesian Tree
- Fusion Tree — optimizing queries
- Van Emde Boas Tree for fast lookups
- Trie for dictionary and autocomplete
- Suffix Tree
- Suffix Array
- Compressed Trie (Radix Tree)
- Patricia Tree
- Wavelet Tree
- Link-Cut Tree — dynamic trees
- Euler Tour Tree
- Heavy-Light Decomposition
- Dynamic Segment Tree
- Persistent Segment Tree
- Advanced Binary Search Trees
- Finger Tree — functional programming
- Dijkstra’s Algorithm with Fibonacci Heap
- Bellman-Ford and Johnson’s Algorithm
- Floyd-Warshall with optimizations
- A* Search — heuristic-driven paths
- Eulerian Cycle — applications
- Hamiltonian Cycle — complexity and heuristics
- MST: Prim vs Kruskal comparison
- Borůvka’s Algorithm for MST
- Edmonds-Karp for Max Flow
- Push-Relabel Algorithm
- Dinic’s Algorithm
- Hopcroft-Karp for bipartite matching
- Chu-Liu/Edmonds’ Algorithm (directed MST)
- Johnson’s Algorithm for all-pairs shortest path
- Tarjan’s Algorithm — strongly connected components
- Kosaraju’s Algorithm
- Advanced Topological Sorting
- Euler Tour technique for graph problems
- Hungarian Algorithm for assignment problem
- Min-Cut / Max-Flow in transportation networks
- Knuth-Morris-Pratt (KMP)
- Boyer-Moore Algorithm
- Rabin-Karp with hashing
- Z-Algorithm
- Aho-Corasick for multi-pattern search
- Manacher’s Algorithm — longest palindrome
- Suffix Automaton
- Burrows–Wheeler Transform (BWT)
- FM-Index for compressed search
- Rolling Hash & Rabin Fingerprinting
- Duval’s Algorithm (Lyndon factorization)
- Lempel-Ziv-Welch (LZW) compression
- Rope and Splay Rope (dynamic strings)
- Palindromic Tree (Eertree)
- Edit Distance (Levenshtein distance with DP)
- Bitap Algorithm (approximate matching)
- Plagiarism detection with w-shingling
- Bloom Filter in string processing
- Suffix Array vs Suffix Tree trade-offs
- DNA sequencing with string matching
- Binary Search extensions (Ternary Search)
- Exponential Search
- Interpolation Search
- Fibonacci Search
- Simulated Annealing
- Tabu Search
- Genetic Algorithms
- Ant Colony Optimization (ACO)
- Particle Swarm Optimization (PSO)
- Artificial Bee Colony (ABC)
- Hill Climbing
- Beam Search
- Branch and Bound technique
- Knuth Optimization in DP
- Divide & Conquer Optimization in DP
- Convex Hull Trick
- Li Chao Tree
- Matrix Exponentiation
- Meet-in-the-Middle technique
- Fast Fourier Transform (FFT) in polynomial multiplication
- Bloom Filter and Counting Bloom Filter
- Cuckoo Hashing
- Perfect Hashing
- HyperLogLog for cardinality estimation
- Skip Graph
- Graph Coloring Algorithms
- Disjoint Set Union (Union-Find with optimizations)
- Mo’s Algorithm — offline query processing
- Sparse Table for RMQ
- Dynamic Programming on Trees