Data Structures & Algorithms
roadmap.sh: https://roadmap.sh/datastructures-and-algorithms
Suggested path through the Data Structures & Algorithms nodes. Each node links to its lesson when written.
Nodes
Language & foundations
- pick-a-language
- language-syntax
- control-structures
- functions
- programming-paradigms
- basic-data-structures
Algorithmic complexity
- time-and-space-complexity
- asymptotic-notation
- asymptotic-notation
- asymptotic-notation
- asymptotic-notation
- time-and-space-complexity
- time-and-space-complexity
Common runtimes
- common-runtimes
- common-runtimes
- common-runtimes
- common-runtimes
- common-runtimes
- common-runtimes
- common-runtimes
Basic data structures
Complex / advanced data structures
- complex-data-structures
- complex-data-structures
- heaps-and-priority-queues
- graphs
- graphs
- graphs
- graphs
- tries
- disjoint-set-union-find
- fenwick-trees
- segment-trees
- suffix-arrays
- suffix-trees
Tree data structures
Tree traversal
Search algorithms
Sorting algorithms
- sorting
- sorting
- sorting
- sorting
- sorting
- sorting
- sorting
- shell-sort
- radix-sort
- cyclic-sort
- graph-algorithms
- random-shuffle
Graph algorithms
- graph-algorithms
- graph-algorithms
- a-algorithm
- minimum-spanning-tree
- kruskal-s-algorithm
- graph-algorithms
Problem-solving techniques
- brute-force
- backtracking
- divide-and-conquer
- greedy-algorithms
- dynamic-programming
- recursion
- two-pointers
- fast-and-slow-pointers
- sliding-window
- merge-intervals
- kth-element
- island-matrix-traversal
- concurrency-and-deadlocks
Practice
Resources
See resources.md.
Project ideas
- Build a small DSA library in
playgrounds/rust/implementing core structures from scratch: linked list, dynamic array, hash table, binary search tree, and a min/max heap — each with unit tests covering edge cases. - Implement a graph library in
playgrounds/go/with adjacency-list storage, then add BFS, DFS, Dijkstra, and Kruskal’s MST; visualize a sample network and shortest paths. - Write a benchmarking harness (Go or Rust) that races the sorting algorithms (bubble, insertion, merge, quick, heap, radix) across input sizes/distributions and charts the empirical Big-O curves against theory.