All roadmaps
beginner30 topics

Data Structures and Algorithms

A comprehensive learning path covering fundamental and advanced data structures and algorithms. By the end, you will be able to analyze algorithmic complexity, implement core data structures from scratch, and apply algorithmic paradigms to solve complex problems efficiently.

Start learning

What you'll learn

Section 1 · Foundations

  1. 01
    Computational Thinking
    Learn to break problems into smaller parts, recognize patterns, and design step-by-step solutions before writing any code.
  2. 02
    Big-O Notation and Complexity Analysis
    Understand how to measure and compare the time and space efficiency of algorithms using asymptotic notation (O, Ω, Θ).
  3. 03
    Recursion and Recurrence Relations
    Master the art of solving problems by having functions call themselves, and learn to analyze recursive algorithms using recurrence relations.

Section 2 · Linear Data Structures

  1. 01
    Arrays and Dynamic Arrays
    Understand contiguous memory storage, random access, resizing strategies, and the trade-offs between static and dynamic arrays.
  2. 02
    Linked Lists
    Learn singly and doubly linked lists, pointer manipulation, and when linked structures outperform contiguous ones.
  3. 03
    Stacks
    Understand the LIFO principle, implement stacks using arrays and linked lists, and apply them to parsing, undo systems, and expression evaluation.
  4. 04
    Queues and Deques
    Learn FIFO queues, double-ended queues, and circular buffers, and see how they model real-world waiting and scheduling problems.

Section 3 · Sorting and Searching

  1. 01
    Elementary Sorting Algorithms
    Implement and analyze bubble sort, selection sort, and insertion sort to build intuition for sorting mechanics and best/worst-case behavior.
  2. 02
    Efficient Sorting: Merge Sort and Quick Sort
    Master divide-and-conquer sorting algorithms, understand their O(n log n) performance, and learn how pivot selection affects quicksort.
  3. 03
    Non-Comparison Sorting
    Explore counting sort, radix sort, and bucket sort — algorithms that beat the O(n log n) lower bound by exploiting data properties.
  4. 04
    Binary Search and Its Variants
    Learn to halve your search space efficiently, and apply binary search to sorted arrays, answer spaces, and monotonic functions.

Section 4 · Hashing

  1. 01
    Hash Tables and Hash Functions
    Understand how hash functions map keys to indices, and learn to build hash tables with O(1) average-case lookups.
  2. 02
    Collision Resolution Strategies
    Compare chaining vs. open addressing (linear probing, quadratic probing, double hashing) and understand load factors and rehashing.

Section 5 · Trees

  1. 01
    Binary Trees and Traversals
    Learn tree terminology (root, leaf, height, depth), implement binary trees, and master in-order, pre-order, post-order, and level-order traversals.
  2. 02
    Binary Search Trees
    Understand how BSTs maintain sorted order, implement insertion, deletion, and search, and analyze their performance characteristics.
  3. 03
    Balanced Trees (AVL and Red-Black)
    Learn why unbalanced BSTs degrade to O(n) and how self-balancing trees guarantee O(log n) operations through rotations.
  4. 04
    Heaps and Priority Queues
    Build min-heaps and max-heaps using arrays, implement heap sort, and use priority queues for scheduling and greedy algorithms.
  5. 05
    Tries (Prefix Trees)
    Implement trie data structures for efficient string storage and retrieval, supporting autocomplete and dictionary lookups.

Section 6 · Graphs

  1. 01
    Graph Representations
    Understand adjacency matrices, adjacency lists, and edge lists, and learn when each representation is most appropriate.
  2. 02
    BFS and DFS
    Master breadth-first and depth-first search, understand their properties, and apply them to connectivity, cycle detection, and topological sorting.
  3. 03
    Shortest Path Algorithms
    Implement Dijkstra's, Bellman-Ford, and Floyd-Warshall algorithms and understand when to use each based on graph properties.
  4. 04
    Minimum Spanning Trees
    Learn Kruskal's and Prim's algorithms for finding minimum-cost spanning trees, and understand the role of the Union-Find data structure.
  5. 05
    Union-Find (Disjoint Set Union)
    Implement the Union-Find structure with path compression and union by rank for near-constant-time connectivity queries.

Section 7 · Algorithm Design Paradigms

  1. 01
    Greedy Algorithms
    Learn the greedy choice property and optimal substructure, and apply greedy strategies to interval scheduling, Huffman coding, and coin change.
  2. 02
    Divide and Conquer
    Understand how to split problems into independent subproblems, solve them recursively, and combine results — beyond just sorting.
  3. 03
    Dynamic Programming
    Master memoization and tabulation to solve overlapping-subproblem problems like knapsack, longest common subsequence, and edit distance.
  4. 04
    Backtracking
    Learn to systematically explore solution spaces by building candidates incrementally and abandoning paths that cannot lead to valid solutions.

Section 8 · Advanced Topics

  1. 01
    String Matching Algorithms
    Explore KMP, Rabin-Karp, and other pattern matching algorithms that find substrings faster than brute force.
  2. 02
    Amortized Analysis
    Understand how to analyze the average cost of operations over a sequence, even when individual operations vary widely in cost.
  3. 03
    NP-Completeness and Intractability
    Learn what makes problems computationally hard, understand P vs NP, and recognize NP-complete problems to avoid futile optimization attempts.