Problems and solutions Sequence of items Linked list Resizable vector Dictionary Hash table Various binary search trees Trie and compressed trie (strings) Flat tree and fusion tree (integers) Priority queue Binary heap, k-ary heap Leftist heap Fibonacci heap Flat tree and fusion tree (integers) Successor queries Various binary search trees Average case analysis of random insertion order Treap (randomize insertion order for nonrandom input sequence) Red-black tree BB[alpha] tree Splay tree Skip list Flat tree and fusion tree (integers) Range queries on point data Augmented binary search trees Range trees (very briefly) kD-trees and quadtrees Recursive data structures with BB[alpha]-trees Range minimization structure Range queries on interval data Interval trees Segment trees Recursive structures with segment trees String searching Suffix trees Structure in trees Navigation in trees (parent pointers, child pointers, both) Cutting and linking trees Least common ancestors Disjoint sets and incremental connectivity Union-find Offline union-find General techniques Find a way to transform the problem into a tree (e.g. Cartesian tree for range min) Fractional cascading (speed up repeated binary searches) Persistence Micro-macro structure (precompute solutions for small data subsets, organize overall data with less space-efficient structure with one data item per subset as in range minimization data structure)