Every data structure actually implemented and proved somewhere in this repo, organized by what it’s for, with the key operations and their cost. This is a map into deep content, not a re-explanation — see also the base data-structure catalog (arrays, lists, measured memory per element) and Types of Trees (the tree-shaped taxonomy). For the general problem-solving strategies these structures serve, see 🐬 Paradigms and 🐬 Techniques; for a single named procedure, see 🐬 Algorithms.
Linear
| Structure | Supports | Note |
|---|---|---|
| Array | index, insert/erase | Data Structure Catalog |
| Linked list (singly/doubly/circular) | insert/erase at a known node, index | Data Structure Catalog |
| Stack / queue / deque | push/pop at the relevant end(s) | Data Structure Catalog |
| Monotonic stack / deque | amortized nearest-greater/smaller, sliding window min/max | Monotonic Stack, Two Pointers |
Hash-based
| Structure | Supports | Note |
|---|---|---|
Hash table / set (unordered_map/gp_hash_table) | expected insert/find/erase | STL Containers and Hashing |
| Anti-hash-test-safe hashing (splitmix64, random seed) | same, but adversary-safe | STL Containers and Hashing |
Heaps
| Structure | Supports | Note |
|---|---|---|
Binary heap (priority_queue) | push/pop-min, top | Heaps |
| Leftist / pairing / skew heap | (amortized for pairing/skew) push/pop/merge | Heaps |
| Radix heap | push, amortized pop-min for bounded-range weights | Heaps |
| Priority-queue-undo | push/pop with rollback to any earlier state | Heaps |
Union-Find
| Structure | Supports | Note |
|---|---|---|
| DSU (union by size/rank + path compression) | amortized union/find | Disjoint Set Union |
| Weighted DSU | union/find plus a potential/offset per element | Disjoint Set Union |
| DSU with rollback | union/find + undo of the last union | Disjoint Set Union |
| DSU on tree / small-to-large | merges child sets in total across the whole tree | Small to Large |
Range-query structures
| Structure | Supports | Note |
|---|---|---|
| Sparse table | idempotent range query (min/max/gcd/and/or), no updates | Sparse Table |
| Disjoint sparse table | range query for any associative (non-idempotent) op, no updates | Sparse Table |
| Sqrt tree | query, update for associative ops | Sparse Table |
| Fenwick / BIT (+ range-update variant) | point update / prefix query (and the reverse) | Fenwick Tree |
| Segment tree | point/range update, range query | Segment Tree |
| Lazy segment tree | range update, range query | Lazy Propagation |
| Persistent segment tree | update creating a new version, query any version | Dynamic and Persistent Segment Trees |
| Segment tree beats | amortized range chmin/chmax + range sum | Segment Tree Beats |
| Li Chao tree | insert a line, query the envelope at a point | Li Chao and Kinetic Segment Tree |
| Kinetic segment tree | maintains a changing argmin/argmax under moving linear functions | Li Chao and Kinetic Segment Tree |
| Wavelet tree / persistent structure for order statistics | range -th smallest, range count in | Range Order Statistics |
Ordered set / PBDS tree | order-of-key, find-by-order | Ordered Set and PBDS |
| Chtholly tree (ODT) | amortized range assign on randomized data | Chtholly Tree |
| Van Emde Boas tree / fast bitset-based sets | predecessor/successor | Fast Set and Exotic Structures |
Balanced search trees
| Structure | Supports | Note |
|---|---|---|
| Treap | expected insert/erase/split/merge, implicit-key variant for order statistics | Treaps and Balanced BSTs |
| Splay tree | amortized access/insert/erase, self-adjusting | Treaps and Balanced BSTs |
| Implicit treap / rope | range reverse/shift on a sequence | Treaps and Balanced BSTs |
Tries
| Structure | Supports | Note |
|---|---|---|
| String trie / Aho–Corasick | build, multi-pattern matching | Trie and Aho–Corasick |
| Binary (bitwise) trie | insert/erase/max-XOR query | Binary Trie |
| Palindromic tree (Eertree) | build, one node per distinct palindromic substring | Eertree |
Dynamic and advanced trees
| Structure | Supports | Note |
|---|---|---|
| Link-cut tree | amortized link/cut/path-query on a dynamic forest | Link-Cut Tree |
| Top tree | link/cut + arbitrary path and subtree aggregation | Top Trees |
| Euler tour tree | amortized link/cut + subtree aggregates on a dynamic forest | Euler Tour Tree |
| Kruskal reconstruction tree | “max edge on path ” via LCA, built once | Kruskal Reconstruction Tree |
| Centroid tree | depth, backbone for path-counting divide and conquer | Centroid Decomposition |
| Virtual (auxiliary) tree | total DP restricted to marked vertices | Virtual Tree |
| Heavy-light skeleton | per chain hop, pairs with a segment tree for path queries | Heavy-Light Decomposition |
| Persistent segment tree / treap / trie | any of the above rebuilt so updates create new nodes | Persistence |
String structures
| Structure | Supports | Note |
|---|---|---|
| Suffix array (+ LCP array) | or (SA-IS) build, binary-searchable substrings | Suffix Array |
| Suffix automaton | states, every distinct substring as one path | Suffix Automaton |
| Suffix tree | compressed trie of all suffixes, via Ukkonen’s | Suffix Tree |
Spatial
| Structure | Supports | Note |
|---|---|---|
| K-d tree | or -ish range/nearest-neighbour queries in low dimensions | KD-Tree and Spatial Structures |