b-trees and red black trees. binary trees b trees spread data all over – fine for memory – bad...
TRANSCRIPT
![Page 1: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/1.jpg)
B-Trees and Red Black Trees
![Page 2: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/2.jpg)
Binary Trees
• B Trees spread data all over– Fine for memory– Bad on disks
![Page 3: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/3.jpg)
Disk Blocks
• Disk data stored in blocks/sectors– 512bytes – 4kB– Increment for all reds/writes– Like to maximize
useful data
![Page 4: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/4.jpg)
B Trees
• B Tree– Each node can store up to n values– Each value choses between two pointers• Max Degree = num pointers = n + 1
![Page 5: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/5.jpg)
B Trees
• B Tree– Node designed to fit
block size– May have degree of 100+• First level 100 keys• Second level 100,000 keys• Third level 100,000,000 keys!
– Still compare against keys one at a time
![Page 6: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/6.jpg)
B Tree Simulation
• BTree Inserts– Always insert at leaves– Split at max size, median value moves to parent– Tree gets deeper when root splits
![Page 7: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/7.jpg)
B Tree Simulation
• BTree Deletes– Remove from node– Empty node• Steal from sibling if possible• Else merge with sibling & steal key from parent
Start Removed 104 Removed 112
![Page 8: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/8.jpg)
So…
• Btrees self balance• Can represent as a binary tree…
![Page 9: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/9.jpg)
Red Black Tree
• Red Black tree can be seen as binary version of Btree– Red nodes are part of their parent• 1 red + 1 black = node degree 3• 2 red + black = node degree 4
![Page 10: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/10.jpg)
Red Black Rules
• Two views of same tree
![Page 11: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/11.jpg)
Red Black Rules
• Rules1. The root is black
![Page 12: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/12.jpg)
Red Black Rules
• Rules1. The root is black – if it becomes red, turn it back to black2. Null values are black3. A red node must have black children4. Every path from root to leaf must have same number of
black nodes
![Page 13: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/13.jpg)
Nodes vs Edges
• Note: Can think of edges or nodes as red/black
![Page 14: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/14.jpg)
Guarantee
• Worst and best case in terms of red nodes for black height = 2
• If L = num leaves, B = black height 2B ≤ L ≤ 22B 2B ≤ L ≤ 4B
![Page 15: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/15.jpg)
Guarantee
• So…
![Page 16: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/16.jpg)
Height
• Black height is O(logL)• Total height at most 2B– 2O(logL) = O(logL)– Height is O(logL)
• Total nodes (N) < 2L – 1– O(log(n/2)) = O(logn) Guaranteed logN performance
𝑙𝑜𝑔2 (𝐿 )≥𝐵
![Page 17: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/17.jpg)
Actual Work
• Insert as normal– New node is always red
– Two red's in a row need tobe fixed…
![Page 18: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/18.jpg)
Fixes
• Red parent of red child with red sibling– Push up redness of siblings to grandparent• Fix them if necessary• If root becomes red, make it black
Splitting a 4 node
![Page 19: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/19.jpg)
Fixes
• Red parent of red child with black/no sibling– AVL style rotation to balance– New parent becomes black, new child red
Turn a 3 node + child into 4 node
![Page 20: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/20.jpg)
Binary Tree Comparisons
• BST– Hopefully O(logn)– Could be O(n)
• Splay – Amortized O(logn)– Ideal for consecutive accesses
![Page 21: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/21.jpg)
Binary Tree Comparisons
• AVL– Guaranteed O(logn)– High constant factors on insert/delete– Height limited to ~1.44 log(n)
![Page 22: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/22.jpg)
Binary Tree Comparisons
• Red/Black– Guaranteed O(logn)– Height limited to ~2 log(n)• Less balanced than AVL
– Faster insert/remove– Slower find
– Standard implementation for most library BSTs
![Page 23: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/23.jpg)
Tree Comparisons
• BTree– Not binary – can pick any node size– Still sorted– Self balancing– Ideal for slower storage– Model for red/black trees
![Page 24: B-Trees and Red Black Trees. Binary Trees B Trees spread data all over – Fine for memory – Bad on disks](https://reader035.vdocuments.net/reader035/viewer/2022081603/56649ef45503460f94c0811c/html5/thumbnails/24.jpg)
Tree Comparisons
• Other trees– Represent tree structure– Not necessarily sorted