Added notes on practical use of different flavors of balanced search trees.
This commit is contained in:
parent
35096b9c99
commit
7c95958b5e
50
README.md
50
README.md
@ -443,35 +443,77 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
||||
- Know least one type of balanced binary tree (and know how it's implemented):
|
||||
|
||||
- [x] **AVL trees**
|
||||
- In practice:
|
||||
From what I can tell, these aren't used much in practice, but I could see where they would be:
|
||||
The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly
|
||||
balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it
|
||||
attractive for data structures that may be built once and loaded without reconstruction, such as language
|
||||
dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter).
|
||||
- [x] MIT AVL Trees / AVL Sort: https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6
|
||||
- [x] https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees
|
||||
- [x] https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation
|
||||
- [x] https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge
|
||||
|
||||
- [x] **Splay trees**
|
||||
- In practice:
|
||||
Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors,
|
||||
data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory,
|
||||
networking, and file system code) etc.
|
||||
- [x] CS 61B: Splay Trees: https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd
|
||||
- [x] MIT Lecture: Splay Trees:
|
||||
- Gets very mathy, but watch the last 10 minutes for sure.
|
||||
- https://www.youtube.com/watch?v=QnPl_Y6EqMo
|
||||
|
||||
- [x] **2-3-4 Trees**
|
||||
- [x] CS 61B Lecture 26: Balanced Search Trees: https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C
|
||||
|
||||
- [x] **2-3 search trees**
|
||||
- In practice:
|
||||
2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees).
|
||||
You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees.
|
||||
- [ ] 23-Tree Intuition and Definition: https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2
|
||||
- [ ] Binary View of 23-Tree: https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6
|
||||
- [x] 2-3 Trees (student recitation): https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp
|
||||
|
||||
- [x] **2-3-4 Trees (aka 2-4 trees)**
|
||||
- In practice:
|
||||
For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion
|
||||
operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an
|
||||
important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce
|
||||
2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**.
|
||||
- [x] CS 61B Lecture 26: Balanced Search Trees: https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C
|
||||
- [ ] Bottom Up 234-Trees: https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6
|
||||
- [ ] Top Down 234-Trees: https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5
|
||||
|
||||
- [ ] **Red/black trees**
|
||||
- In practice:
|
||||
Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time.
|
||||
Not only does this make them valuable in time-sensitive applications such as real-time applications,
|
||||
but it makes them valuable building blocks in other data structures which provide worst-case guarantees;
|
||||
for example, many data structures used in computational geometry can be based on red–black trees, and
|
||||
the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java,
|
||||
the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor
|
||||
hashcodes, a Red-Black tree is used.
|
||||
- [ ] Aduni - Algorithms - Lecture 4
|
||||
link jumps to starting point:
|
||||
https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871
|
||||
- [ ] Aduni - Algorithms - Lecture 5: https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5
|
||||
|
||||
- [ ] **B-Trees**
|
||||
- fun fact: B could stand for Boeing, Balanced, or Bayer (co-inventor)
|
||||
- fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor)
|
||||
- In Practice:
|
||||
B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants
|
||||
[https://en.wikipedia.org/wiki/B-tree]). In addition to its use in databases, the B-tree is also used in
|
||||
filesystems to allow quick random access to an arbitrary block in a particular file. The basic problem is
|
||||
turning the file block i address into a disk block(or perhaps to a cylinder-head-sector) address.
|
||||
- [ ] Binary Search Tree Review: https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6
|
||||
- [ ] Introduction to B-Trees: https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6
|
||||
- [ ] B-Tree Definition and Insertion: https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6
|
||||
- [ ] B-Tree Deletion: https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6
|
||||
|
||||
- [ ] **Skip lists**
|
||||
- [ ] MIT: Randomization: Skip Lists: https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp
|
||||
|
||||
- [ ] **Memory Model & Trees**
|
||||
- [ ] MIT 6.851 - Memory Hierarchy Models: https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf
|
||||
|
||||
- [ ] **Treap**
|
||||
- [ ] ?
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user