|
@@ -442,6 +442,9 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
|
|
|
|
- [ ] **Balanced search trees**
|
|
- [ ] **Balanced search trees**
|
|
- Know least one type of balanced binary tree (and know how it's implemented):
|
|
- Know least one type of balanced binary tree (and know how it's implemented):
|
|
|
|
+ - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular.
|
|
|
|
+ A particularly interesting self-organizing data structure is the splay tree, which uses rotations
|
|
|
|
+ to move any accessed key to the root." - Skiena
|
|
|
|
|
|
- [x] **AVL trees**
|
|
- [x] **AVL trees**
|
|
- In practice:
|
|
- In practice:
|
|
@@ -493,6 +496,9 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
- [x] Introduction to B-Trees: https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6
|
|
- [x] Introduction to B-Trees: https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6
|
|
- [x] B-Tree Definition and Insertion: https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6
|
|
- [x] B-Tree Definition and Insertion: https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6
|
|
- [x] B-Tree Deletion: https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6
|
|
- [x] B-Tree Deletion: https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6
|
|
|
|
+ - [x] MIT 6.851 - Memory Hierarchy Models: https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf
|
|
|
|
+ - covers cache-oblivious B-Trees, very interesting data structures
|
|
|
|
+ - the first 37 minutes are very technical, may be skipped (B is block size, cache line size)
|
|
|
|
|
|
- [ ] **Red/black trees**
|
|
- [ ] **Red/black trees**
|
|
- In practice:
|
|
- In practice:
|
|
@@ -508,13 +514,7 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871
|
|
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
|
|
- [ ] Aduni - Algorithms - Lecture 5: https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5
|
|
|
|
|
|
- - [ ] **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
|
|
|
|
-
|
|
|
|
-- [ ] **N-ary trees**
|
|
|
|
|
|
+- [ ] **N-ary (K-ary) trees**
|
|
- [ ] https://en.wikipedia.org/wiki/K-ary_tree
|
|
- [ ] https://en.wikipedia.org/wiki/K-ary_tree
|
|
|
|
|
|
- [ ] **Tries**
|
|
- [ ] **Tries**
|
|
@@ -522,16 +522,6 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
- [ ] https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries
|
|
- [ ] https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries
|
|
- [ ] https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie
|
|
- [ ] https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie
|
|
|
|
|
|
-- [ ] **Disjoint Sets:**
|
|
|
|
- - [ ] https://en.wikipedia.org/wiki/Disjoint-set_data_structure
|
|
|
|
- - [ ] UCB 61B - Disjoint Sets; Sorting & selection: https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21
|
|
|
|
- - [ ] https://www.coursera.org/learn/data-structures/lecture/JssSY/overview
|
|
|
|
- - [ ] https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations
|
|
|
|
- - [ ] https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees
|
|
|
|
- - [ ] https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank
|
|
|
|
- - [ ] https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression
|
|
|
|
- - [ ] https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional
|
|
|
|
-
|
|
|
|
## Sorting
|
|
## Sorting
|
|
|
|
|
|
This area is sparse, and I'll be filling it in once I get here.
|
|
This area is sparse, and I'll be filling it in once I get here.
|
|
@@ -602,9 +592,6 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|
|
|
|
|
This area is sparse, and I'll be filling it in once I get here.
|
|
This area is sparse, and I'll be filling it in once I get here.
|
|
|
|
|
|
-- [ ] **Treap**
|
|
|
|
- - [ ] ?
|
|
|
|
-
|
|
|
|
- [ ] Caches
|
|
- [ ] Caches
|
|
- LRU cache
|
|
- LRU cache
|
|
|
|
|
|
@@ -893,6 +880,23 @@ Some of mine (I already may know answer to but want their opinion or team perspe
|
|
Everything below is my recommendation, not Google's, and you may not have enough time to
|
|
Everything below is my recommendation, not Google's, and you may not have enough time to
|
|
learn, watch or read them all. That's ok. I may not either.
|
|
learn, watch or read them all. That's ok. I may not either.
|
|
|
|
|
|
|
|
+- [ ] **Skip lists**
|
|
|
|
+ - "These are somewhat of a cult data structure" - Skiena
|
|
|
|
+ - [ ] MIT: Randomization: Skip Lists: https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp
|
|
|
|
+
|
|
|
|
+- [ ] **Disjoint Sets:**
|
|
|
|
+ - [ ] https://en.wikipedia.org/wiki/Disjoint-set_data_structure
|
|
|
|
+ - [ ] UCB 61B - Disjoint Sets; Sorting & selection: https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21
|
|
|
|
+ - [ ] https://www.coursera.org/learn/data-structures/lecture/JssSY/overview
|
|
|
|
+ - [ ] https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations
|
|
|
|
+ - [ ] https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees
|
|
|
|
+ - [ ] https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank
|
|
|
|
+ - [ ] https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression
|
|
|
|
+ - [ ] https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional
|
|
|
|
+
|
|
|
|
+- [ ] **Treap**
|
|
|
|
+ - [ ] ?
|
|
|
|
+
|
|
- [x] **Parity & Hamming Code**
|
|
- [x] **Parity & Hamming Code**
|
|
- [x] Parity:
|
|
- [x] Parity:
|
|
- https://www.youtube.com/watch?v=DdMcAUlxh1M
|
|
- https://www.youtube.com/watch?v=DdMcAUlxh1M
|