Resources
Curated, operational source list. Concept pages cite book chunks only; URLs live here.
Source Stack
| Role | Source | When to use |
|---|---|---|
| Primary reference | Cormen, Leiserson, Rivest, Stein. Introduction to Algorithms (4th ed.). CLRS. | Canonical treatment of red-black trees, disjoint sets, amortized analysis. First stop for theorems and proofs. |
| Pragmatic companion | Skiena. The Algorithm Design Manual (3rd ed.). | Sanity-check when CLRS feels abstract. Useful "war stories" and pragmatic choice advice. |
| Implementation primer | Sedgewick. Algorithms (1st ed., Princeton). | Balanced-tree implementations, priority queues, random-number primers. |
| Contest / tooling | Halim & Halim. Competitive Programming. | Segment tree, Fenwick tree, union-find recipes that actually compile under contest constraints. |
| Light overview | Bhargava. Grokking Algorithms. | Re-acquaintance: Bloom filters, hashing intuition, mental models before the formal text. |
| External (papers and lectures) | See External Resources below. | Only after the book has failed or the concept is explicitly research-flavored (Fibonacci heaps, persistence, succinct). |
Skiena and Sedgewick are not substitutes for CLRS on amortized analysis. Use them to unstick intuition; return to CLRS to lock the proof.
Resource Map by Cluster
Relative paths from a concept page (concepts/cluster-XX/NN-*.md) use prefix ../../../books/.
Cluster 1 - Balanced Binary Search Trees
| Concept | Local chunk(s) |
|---|---|
| 01 BSTs and the BST property (supporting) | CLRS 12.1 Binary search trees, Sedgewick balanced trees |
| 02 Red-Black trees (primary) | CLRS 13.1 Properties of red-black trees, CLRS 13.2 Rotations, CLRS 13.3 Insertion, CLRS 13.4 Deletion, Sedgewick balanced trees |
| 03 AVL trees (supporting) | Sedgewick balanced trees. CLRS treats AVL only in passing; see External below. |
| 04 Skip lists (primary) | No dedicated CLRS chunk. See External: Pugh's original paper. |
Cluster 2 - Union-Find and Disjoint-Set Structures
| Concept | Local chunk(s) |
|---|---|
| 05 Union-Find and naive representation (supporting) | CLRS 19.1 Disjoint-set operations, CLRS 19.2 Linked-list representation, Competitive Programming 2.4.2 Union-find disjoint sets |
| 06 Union by rank + path compression (primary) | CLRS 19.3 Disjoint-set forests, CLRS 19.4 Analysis of union by rank with path compression, Competitive Programming 2.4.2 Union-find disjoint sets |
| 07 Applications (primary) | CLRS 21.2 Kruskal and Prim, Competitive Programming 4.3 Minimum spanning tree |
Cluster 3 - Advanced Heaps and Meldable Structures
| Concept | Local chunk(s) |
|---|---|
| 08 Binomial heaps (primary) | No dedicated CLRS 4th-edition chunk (removed after 3rd edition). Sedgewick priority queues. See External: Vuillemin 1978 binomial heap paper. |
| 09 Fibonacci heaps (primary) | No dedicated CLRS 4th-edition chunk. Sedgewick priority queues. See External: Fredman and Tarjan 1987, MIT OCW 6.046J. |
| 10 Pairing heaps (supporting) | Skiena: Pairing heap discussion. See External: Fredman, Sedgewick, Sleator, Tarjan 1986. |
Cluster 4 - Amortized Analysis
| Concept | Local chunk(s) |
|---|---|
| 11 Why amortized (primary) | CLRS Chapter 16 (intro, see 16.1) |
| 12 Aggregate method and dynamic array (primary) | CLRS 16.1 Aggregate analysis, CLRS 16.4 Dynamic tables |
| 13 Accounting method (primary) | CLRS 16.2 The accounting method, CLRS 16.4 Dynamic tables |
| 14 Potential method (primary) | CLRS 16.3 The potential method, CLRS 16.4 Dynamic tables |
Cluster 5 - Randomized, Persistent, and Succinct Structures
| Concept | Local chunk(s) |
|---|---|
| 15 Randomized DS (supporting) | Sedgewick random numbers, Competitive Programming 2.3 Non-linear DS with built-in libraries. See External: Pugh skip list, Aragon-Seidel treaps. |
| 16 Bloom filters (primary) | Grokking Algorithms Chapter 11: Bloom filters and HyperLogLog. See External: Bloom 1970, hur.st calculator. |
| 17 Segment and Fenwick trees (primary) | Competitive Programming 2.4.3 Segment tree, Competitive Programming 2.4.4 Binary indexed (Fenwick) tree. See External: CP-Algorithms segment tree. |
| 18 Persistent DS (supporting) | No dedicated CLRS or Skiena chunk. See External: Okasaki, Driscoll-Sarnak-Sleator-Tarjan 1986. |
| 19 Succinct and cache-oblivious (supporting) | No dedicated local chunk. See External: Jacobson 1989, Frigo-Leiserson-Prokop-Ramachandran 1999. |
External Resources (validated)
Use only if the book has failed you. Each was validated by network fetch at authoring time.
Papers
- Pugh, W. (1990). "Skip Lists: A Probabilistic Alternative to Balanced Trees." Communications of the ACM 33(6). https://homepage.cs.uiowa.edu/~ghosh/skip.pdf
- Tarjan, R. E. (1975). "Efficiency of a Good But Not Linear Set Union Algorithm." J. ACM 22. Original amortized
alpha(n)proof. https://www.cs.princeton.edu/courses/archive/fall03/cs528/handouts/p215-tarjan.pdf - Fredman, M. L. and Tarjan, R. E. (1987). "Fibonacci heaps and their uses in improved network optimization algorithms." J. ACM 34(3). https://dl.acm.org/doi/10.1145/28869.28874
- Fredman, M., Sedgewick, R., Sleator, D. D., Tarjan, R. E. (1986). "The Pairing Heap: A New Form of Self-Adjusting Heap." Algorithmica 1. https://www.cs.cmu.edu/~sleator/papers/pairing-heaps.pdf
- Vuillemin, J. (1978). "A data structure for manipulating priority queues." CACM 21(4). Binomial heap.
- Driscoll, Sarnak, Sleator, Tarjan (1989). "Making Data Structures Persistent." JCSS 38. Path copying and the fat-node method. https://www.cs.cmu.edu/~sleator/papers/another-persistence.pdf
- Jacobson, G. (1989). "Space-Efficient Static Trees and Graphs." FOCS. Succinct data structures.
- Frigo, Leiserson, Prokop, Ramachandran (1999). "Cache-Oblivious Algorithms." FOCS.
- Bloom, B. H. (1970). "Space/Time Trade-offs in Hash Coding with Allowable Errors." CACM 13(7). https://dl.acm.org/doi/10.1145/362686.362692
Lectures
- MIT OCW 6.046J Design and Analysis of Algorithms. Lectures on amortized analysis and Fibonacci heaps. https://ocw.mit.edu/courses/6-046j-design-and-analysis-of-algorithms-spring-2015/
- MIT 6.851 Advanced Data Structures (Erik Demaine). Persistent, retroactive, succinct, cache-oblivious lectures. https://courses.csail.mit.edu/6.851/spring21/lectures/
- CMU 15-451 Algorithms. Amortized analysis, randomized data structures. https://www.cs.cmu.edu/~15451-f23/lectures/
Online reference material
- CP-Algorithms. Segment tree (with lazy propagation variants). https://cp-algorithms.com/data_structures/segment_tree.html
- CP-Algorithms. Fenwick tree. https://cp-algorithms.com/data_structures/fenwick.html
- CP-Algorithms. Disjoint set union. https://cp-algorithms.com/data_structures/disjoint_set_union.html
- CP-Algorithms. Treap (Cartesian tree). https://cp-algorithms.com/data_structures/treap.html
- CP-Algorithms. Persistent segment tree. https://cp-algorithms.com/data_structures/segment_tree.html#persistent-segment-tree
- Bloom filter sizing calculator. https://hur.st/bloomfilter/
- Fan, B. et al. (2014). "Cuckoo Filter: Practically Better than Bloom." https://www.cs.cmu.edu/~dga/papers/cuckoo-conext2014.pdf
- Navarro, G. (2016). Compact Data Structures. Cambridge University Press. https://users.dcc.uchile.cl/~gnavarro/CDSbook/
Books (external, optional)
- Okasaki, C. (1999). Purely Functional Data Structures. Cambridge University Press. Persistent catenable lists, implicit queues, red-black trees in Haskell.
- Tarjan, R. E. (1983). Data Structures and Network Algorithms. SIAM monograph. The source for splay trees, Fibonacci heaps, and
alpha(n).
Use Rules
- Concept pages do not carry external URLs. If you find one there, move it here.
- For every primary concept you must be able to map the claim in the concept page to a specific book chunk or paper listed above.
- If you reach for an external link, first check whether a local chunk can answer; go external only when the book is silent (e.g., Fibonacci heaps, persistence, succinct, cache-oblivious).
- External reading policy: at most one external source per concept per sitting. If you open more than one, you are procrastinating.