List of data structures used in competitive programming, organized from basic to advanced:
- Arrays
- Static Arrays
- Dynamic Arrays (Vector in C++, ArrayList in Java)
- Linked Lists
- Singly Linked List
- Doubly Linked List
- Stacks
- Queues
- Simple Queue
- Deque (Double-Ended Queue)
- Circular Queue
- Strings
- Hash Tables
- Hash Maps
- Hash Sets
- Binary Trees
- Binary Search Tree (BST)
- Balanced BSTs (AVL Tree, Red-Black Tree)
- Heaps
- Binary Heap (Min-Heap, Max-Heap)
- Binomial Heap
- Fibonacci Heap
- Tries
- Standard Trie
- Compressed Trie (Radix Tree)
- Graphs
- Adjacency Matrix
- Adjacency List
- Segment Trees
- Point Updates
- Range Updates
- Lazy Propagation
- Fenwick Tree (Binary Indexed Tree)
- Point Updates
- Range Queries
- Disjoint Set Union (DSU) / Union-Find
- Path Compression
- Union by Rank/Size
- Balanced Trees
- Splay Tree
- Treap
- Scapegoat Tree
- Sparse Table
- Heavy-Light Decomposition
- Suffix Trees
- Suffix Arrays
- K-D Trees
- Range Minimum Query (RMQ) Structures
- Fenwick Tree of Fenwick Trees (2D BIT)
- Dynamic Segment Trees
- Persistent Data Structures
- Persistent Segment Tree
- Persistent Fenwick Tree
- Self-Adjusting Heaps
- Pairing Heap
- Suffix Automaton
- Wavelet Trees
- Link/Cut Tree
- Euler Tour Tree
- B-Trees
- Trie Variants
- Aho-Corasick Automaton
- Bloom Filter
- Skip Lists
- Van Emde Boas Tree
- Doubly Linked List with Skip Pointers
- Dancing Links (Knuth’s Algorithm X)
- Cuckoo Hashing
- X-fast and Y-fast Tries
- Fusion Trees