Skip to content

Instantly share code, notes, and snippets.

Revisions

  1. asukakenji created this gist Sep 13, 2020.
    621 changes: 621 additions & 0 deletions Data Structures and Algorithms Reading List.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,621 @@
    # Data Structures and Algorithms Reading List

    ## Abstract Data Types / ADTs

    Wikipedia: [Abstract data type - Wikipedia][adt]

    Textbooks:

    [adt]: https://en.wikipedia.org/wiki/Abstract_data_type

    ### List / Vector

    Wikipedia: [List (abstract data type) - Wikipedia][list]

    Textbooks:

    [list]: https://en.wikipedia.org/wiki/List_(abstract_data_type)

    ### Stack

    Wikipedia: [Stack (abstract data type) - Wikipedia][stack]

    Textbooks:

    [stack]: https://en.wikipedia.org/wiki/Stack_(abstract_data_type)

    ### Queue

    Wikipedia: [Queue (abstract data type) - Wikipedia][queue]

    Textbooks:

    [queue]: https://en.wikipedia.org/wiki/Queue_(abstract_data_type)

    ### Double-Ended Queue / Deque

    Wikipedia: [Double-ended queue - Wikipedia][deque]

    Textbooks:

    [deque]: https://en.wikipedia.org/wiki/Double-ended_queue

    ### Priority Queue

    Wikipedia: [Priority queue - Wikipedia][priorityqueue]

    Textbooks:

    [priorityqueue]: https://en.wikipedia.org/wiki/Priority_queue

    ### Double-Ended Priority Queue / DEPQ

    Wikipedia: [Double-ended priority queue - Wikipedia][depq]

    Textbooks:

    [depq]: https://en.wikipedia.org/wiki/Double-ended_priority_queue

    ### Set

    Wikipedia: [Set (abstract data type) - Wikipedia][set]

    Textbooks:

    [set]: https://en.wikipedia.org/wiki/Set_(abstract_data_type)

    ### Multiset

    Wikipedia: [Set (abstract data type) - Wikipedia > Multiset][multiset]

    Textbooks:

    [multiset]: https://en.wikipedia.org/wiki/Set_(abstract_data_type)#Multiset

    ### Disjoint-Set

    Wikipedia: [Disjoint-set data structure - Wikipedia][disjointset]

    Textbooks:

    [disjointset]: https://en.wikipedia.org/wiki/Disjoint-set_data_structure

    ### Map / Dictionary / Associative Array

    Wikipedia: [Associative array - Wikipedia][map]

    Textbooks:

    [map]: https://en.wikipedia.org/wiki/Associative_array

    ### Multimap

    Wikipedia: [Multimap - Wikipedia][multimap]

    Textbooks:

    [multimap]: https://en.wikipedia.org/wiki/Multimap





    ---

    ## Data Structures

    Wikipedia: [Data structure - Wikipedia][datastructure]

    Textbooks:

    [datastructure]: https://en.wikipedia.org/wiki/Data_structure

    ### Array

    Wikipedia: [Array data structure - Wikipedia][array]

    Textbooks:

    [array]: https://en.wikipedia.org/wiki/Array_data_structure

    #### Array List / Dynamic Array

    Wikipedia: [Dynamic array - Wikipedia][dynamicarray]

    Textbooks:

    [dynamicarray]: https://en.wikipedia.org/wiki/Dynamic_array

    #### Hash Table

    Wikipedia: [Hash table - Wikipedia][hashtable]

    Textbooks:

    [hashtable]: https://en.wikipedia.org/wiki/Hash_table





    ### Linked List

    Wikipedia: [Linked list - Wikipedia][linkedlist]

    Textbooks:

    [linkedlist]: https://en.wikipedia.org/wiki/Linked_list

    #### Singly-Linked List

    Wikipedia: [Linked list - Wikipedia > Singly linked list][singlylinkedlist]

    Textbooks:

    [singlylinkedlist]: https://en.wikipedia.org/wiki/Linked_list#Singly_linked_list

    #### Doubly-Linked List

    Wikipedia: [Linked list - Wikipedia > Doubly linked list][doublylinkedlist]

    Textbooks:

    [doublylinkedlist]: https://en.wikipedia.org/wiki/Linked_list#Doubly_linked_list

    #### Circular Linked List

    Wikipedia: [Linked list - Wikipedia > Circular linked list][circularlinkedlist]

    Textbooks:

    [circularlinkedlist]: https://en.wikipedia.org/wiki/Linked_list#Circular_linked_list

    #### Skip List

    Wikipedia: [Skip list - Wikipedia][skiplist]

    Textbooks:

    [skiplist]: https://en.wikipedia.org/wiki/Skip_list

    #### Deterministic Skip List

    Textbooks:





    ### Tree

    Wikipedia: [Tree (data structure) - Wikipedia][tree]

    Textbooks:

    [tree]: https://en.wikipedia.org/wiki/Tree_(data_structure)

    #### Merkle Tree / Hash Tree (1979)

    Wikipedia: [Merkle tree - Wikipedia][merkletree]

    Textbooks:

    [merkletree]: https://en.wikipedia.org/wiki/Merkle_tree

    #### Fenwick Tree / Binary Indexed Tree (1989, 1992, 1994)

    Wikipedia: [Fenwick tree - Wikipedia][fenwicktree]

    Textbooks:

    [fenwicktree]: https://en.wikipedia.org/wiki/Fenwick_tree





    ### Tree > Heap (1964)

    Wikipedia: [Heap (data structure) - Wikipedia][heap]

    Textbooks:

    [heap]: https://en.wikipedia.org/wiki/Heap_(data_structure)

    #### Binary Heap (1964)

    Wikipedia: [Binary heap - Wikipedia][binaryheap]

    Textbooks:

    [binaryheap]: https://en.wikipedia.org/wiki/Binary_heap

    #### d-Heap / d-ary Heap (1975)

    Wikipedia: [d-ary heap - Wikipedia][dheap]

    Textbooks:

    [dheap]: https://en.wikipedia.org/wiki/D-ary_heap

    #### Leftist Heap / Leftist Tree (1972)

    Wikipedia: [Leftist tree - Wikipedia][leftistheap]

    Textbooks:

    [leftistheap]: https://en.wikipedia.org/wiki/Leftist_tree

    #### Skew Heap / Self-Adjusting Heap (1986)

    Wikipedia: [Skew heap - Wikipedia][skewheap]

    Textbooks:

    [skewheap]: https://en.wikipedia.org/wiki/Skew_heap

    #### Binomial Heap / Binomial Queue (1978)

    Wikipedia: [Binomial heap - Wikipedia][binomialheap]

    Textbooks:

    [binomialheap]: https://en.wikipedia.org/wiki/Binomial_heap

    #### Fibonacci Heap (1984)

    Wikipedia: [Fibonacci heap - Wikipedia][fibonacciheap]

    Textbooks:

    [fibonacciheap]: https://en.wikipedia.org/wiki/Fibonacci_heap

    #### Pairing Heap (1986)

    Wikipedia: [Pairing heap - Wikipedia][pairingheap]

    Textbooks:

    [pairingheap]: https://en.wikipedia.org/wiki/Pairing_heap

    #### Interval Heap

    Wikipedia: [Double-ended priority queue - Wikipedia > Interval heaps][intervalheap]

    Textbooks:

    [intervalheap]: https://en.wikipedia.org/wiki/Double-ended_priority_queue#Interval_heaps

    #### Twin Heap

    Wikipedia: [Double-ended priority queue - Wikipedia > Total correspondence][twinheap]

    Textbooks:

    [twinheap]: https://en.wikipedia.org/wiki/Double-ended_priority_queue#Total_correspondence

    #### Min-Max Heap

    Wikipedia: [Min-max heap - Wikipedia][minmaxheap]

    Textbooks:

    [minmaxheap]: https://en.wikipedia.org/wiki/Min-max_heap

    #### Deap

    Textbooks:

    #### Diamond Deque

    Textbooks:

    #### van Emde Boas Tree / vEB Tree (1975)

    Wikipedia: [Van Emde Boas tree - Wikipedia][vbetree]

    Textbook:

    [vbetree]: https://en.wikipedia.org/wiki/Van_Emde_Boas_tree



    ### Tree > Search Tree > Binary Search Tree / BST (1960)

    Wikipedia: [Binary search tree - Wikipedia][bst]

    Textbooks:

    [bst]: https://en.wikipedia.org/wiki/Binary_search_tree

    #### AVL Tree (1962)

    Wikipedia: [AVL tree - Wikipedia][avltree]

    Textbooks:

    [avltree]: https://en.wikipedia.org/wiki/AVL_tree

    #### Red-Black Tree (1972)

    Wikipedia: [Red–black tree - Wikipedia][redblacktree]

    Textbooks:

    [redblacktree]: https://en.wikipedia.org/wiki/Red%E2%80%93black_tree

    **Left-Leaning Red-Black Tree / LLRB Tree (2008)**

    Wikipedia: [Left-leaning red–black tree - Wikipedia][llrbtree]

    Textbooks:

    [llrbtree]: https://en.wikipedia.org/wiki/Left-leaning_red%E2%80%93black_tree

    #### Splay Tree (1985)

    Wikipedia: [Splay tree - Wikipedia][splaytree]

    Textbooks:

    [splaytree]: https://en.wikipedia.org/wiki/Splay_tree

    #### Scapegoat Tree (1993)

    Wikipedia: [Scapegoat tree - Wikipedia][scapegoattree]

    Textbooks:

    [scapegoattree]: https://en.wikipedia.org/wiki/Scapegoat_tree

    #### AA Tree

    Wikipedia: [AA tree - Wikipedia][aatree]

    Textbooks:

    [aatree]: https://en.wikipedia.org/wiki/AA_tree

    #### Treap (TRee + hEAP) (1989)

    Wikipedia: [Treap - Wikipedia][treap]

    Textbooks:

    [treap]: https://en.wikipedia.org/wiki/Treap





    ### Tree > Search Tree > B-Tree Family

    #### 2-3 Tree

    Wikipedia: [2–3 tree - Wikipedia][23tree]

    Textbooks:

    [23tree]: https://en.wikipedia.org/wiki/2%E2%80%933_tree

    #### 2-3-4 Tree / 2-4 Tree

    Wikipedia: [2–3–4 tree - Wikipedia][234tree]

    Textbooks:

    [234tree]: https://en.wikipedia.org/wiki/2%E2%80%933%E2%80%934_tree

    #### B-Tree

    Wikipedia: [B-tree - Wikipedia][btree]

    Textbooks:

    [btree]: https://en.wikipedia.org/wiki/B-tree

    #### B+ Tree

    Wikipedia: [B+ tree - Wikipedia][b+tree]

    Textbooks:

    [b+tree]: https://en.wikipedia.org/wiki/B%2B_tree

    #### B<sup>*</sup> Tree

    Wikipedia: [B-tree - Wikipedia > Variants][b*tree]

    Textbooks:

    [b*tree]: https://en.wikipedia.org/wiki/B-tree#Variants

    #### B<sup>x</sup> Tree

    Wikipedia: [Bx-tree - Wikipedia][bxtree]

    Textbooks:

    [bxtree]: https://en.wikipedia.org/wiki/Bx-tree

    #### UB-Tree

    Wikipedia: [UB-tree - Wikipedia][ubtree]

    Textbooks:

    [ubtree]: https://en.wikipedia.org/wiki/UB-tree

    #### (a,b)-Tree

    Wikipedia: [(a,b)-tree - Wikipedia][abtree]

    Textbooks:

    [abtree]: https://en.wikipedia.org/wiki/(a,b)-tree

    #### Dancing Tree

    Wikipedia: [Dancing tree - Wikipedia][dancingtree]

    Textbooks:

    [dancingtree]: https://en.wikipedia.org/wiki/Dancing_tree

    #### HTree

    Wikipedia: [HTree - Wikipedia][htree]

    Textbooks:

    [htree]: https://en.wikipedia.org/wiki/HTree





    ### Tree > Search Tree > k-d Tree Family

    #### k-d Tree

    Wikipedia: [k-d tree - Wikipedia][kdtree]

    Textbooks:

    [kdtree]: https://en.wikipedia.org/wiki/K-d_tree

    #### Implicit k-d Tree

    Wikipedia: [Implicit k-d tree - Wikipedia][implicitkdtree]

    Textbooks:

    [implicitkdtree]: https://en.wikipedia.org/wiki/Implicit_k-d_tree

    #### min/max k-d Tree

    Wikipedia: [min/max kd-tree - Wikipedia][minmaxkdtree]

    Textbooks:

    [minmaxkdtree]: https://en.wikipedia.org/wiki/Min/max_kd-tree

    #### Quadtree

    Wikipedia: [Quadtree - Wikipedia][quadtree]

    Textbooks:

    [quadtree]: https://en.wikipedia.org/wiki/Quadtree

    **Region Quadtree**

    Wikipedia: [Quadtree - Wikipedia > Region quadtree][regionquadtree]

    Textbooks:

    [regionquadtree]: https://en.wikipedia.org/wiki/Quadtree#Region_quadtree

    **Point Quadtree**

    Wikipedia: [Quadtree - Wikipedia > Point quadtree][pointquadtree]

    Textbooks:

    [pointquadtree]: https://en.wikipedia.org/wiki/Quadtree#Point_quadtree

    **Point Region Quadtree / PR Quadtree**

    Wikipedia: [Quadtree - Wikipedia > Point-region (PR) quadtree][prquadtree]

    Textbooks:

    [prquadtree]: https://en.wikipedia.org/wiki/Quadtree#Point-region_(PR)_quadtree

    **Edge Quadtree**

    Wikipedia: [Quadtree - Wikipedia > Edge quadtree][edgequadtree]

    Textbooks:

    [edgequadtree]: https://en.wikipedia.org/wiki/Quadtree#Edge_quadtree

    **Polygonal Map Quadtree / PM Quadtree**

    Wikipedia: [Quadtree - Wikipedia > Polygonal map (PM) quadtree][pmquadtree]

    Textbooks:

    [pmquadtree]: https://en.wikipedia.org/wiki/Quadtree#Polygonal_map_(PM)_quadtree

    #### Octtree

    Wikipedia: [Octree - Wikipedia][octtree]

    Textbooks:

    [octtree]: https://en.wikipedia.org/wiki/Octree

    #### R-Tree

    Wikipedia: [R-tree - Wikipedia][rtree]

    Textbooks:

    [rtree]: https://en.wikipedia.org/wiki/R-tree

    #### G-Tree

    Textbooks:





    ### Tree > Trie (1959)

    Wikipedia: [Trie - Wikipedia][trie]

    Textbooks:

    [trie]: https://en.wikipedia.org/wiki/Trie

    #### Suffix Tree

    Wikipedia: [Suffix tree - Wikipedia][suffixtree]

    Textbooks:

    [suffixtree]: https://en.wikipedia.org/wiki/Suffix_tree

    #### Radix Tree

    Wikipedia: [Radix tree - Wikipedia][radixtree]

    Textbooks:

    [radixtree]: https://en.wikipedia.org/wiki/Radix_tree

    #### Hash Trie / Hash Tree

    Wikipedia: [Hash tree (persistent data structure) - Wikipedia][hashtrie]

    Textbooks:

    [hashtrie]: https://en.wikipedia.org/wiki/Hash_tree_(persistent_data_structure)

    #### X-Fast Trie

    Wikipedia: [X-fast trie - Wikipedia][xfasttrie]

    Textbooks:

    [xfasttrie]: https://en.wikipedia.org/wiki/X-fast_trie

    #### Y-Fast Trie

    Wikipedia: [Y-fast trie - Wikipedia][yfasttrie]

    Textbooks:

    [yfasttrie]: https://en.wikipedia.org/wiki/Y-fast_trie