amir kamil 8/8/02 1 b+ trees similar to b trees, with a few slight differences all data is stored at...
Post on 21-Dec-2015
214 views
TRANSCRIPT
![Page 1: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/1.jpg)
Amir Kamil 8/8/02 1
B+ Trees
Similar to B trees, with a few slight differences
All data is stored at the leaf nodes (leaf pages); all other nodes (index pages) only store keys
Leaf pages are linked to each other Keys may be duplicated; every key to the
right of a particular key is >= to that key
![Page 2: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/2.jpg)
Amir Kamil 8/8/02 2
B+ Tree Example
9, 16
2, 7 12 18
1 7
93, 4, 6 12
16 19
![Page 3: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/3.jpg)
Amir Kamil 8/8/02 3
B+ Tree Insertion
Insert at bottom level If leaf page overflows, split page and copy
middle element to next index page If index page overflows, split page and move
middle element to next index page
![Page 4: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/4.jpg)
Amir Kamil 8/8/02 4
B+ Tree Insertion Example
9, 16
2, 7 12 18
1 7
93, 4, 6 12
16 19
Insert 5
![Page 5: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/5.jpg)
Amir Kamil 8/8/02 5
B+ Tree Insertion Example
9, 16
2, 7 12 18
1 7
93, 4, 5,6 12
16 19
Insert 5
![Page 6: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/6.jpg)
Amir Kamil 8/8/02 6
B+ Tree Insertion Example
9, 16
2, 5, 7 12 18
1 7
93, 4
12
16 19
Split page, copy 5
5, 6
![Page 7: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/7.jpg)
Amir Kamil 8/8/02 7
B+ Tree Insertion Example 2
9, 13, 16
93, 4, 6 14 16, 18, 20
Insert 17
![Page 8: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/8.jpg)
Amir Kamil 8/8/02 8
B+ Tree Insertion Example 2
Insert 17
9, 13, 16
93, 4, 6 14 16, 17, 18, 20
![Page 9: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/9.jpg)
Amir Kamil 8/8/02 9
B+ Tree Insertion Example 2
Split leaf page, copy 18
9, 13, 16, 18
93, 4, 6 14 16, 17 18, 20
![Page 10: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/10.jpg)
Amir Kamil 8/8/02 10
B+ Tree Insertion Example 2
Split index page, move 13
16, 18
93, 4, 6 14
9
13
16, 17 18, 20
![Page 11: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/11.jpg)
Amir Kamil 8/8/02 11
B+ Tree Deletion
Delete key and data from leaf page If leaf page underflows, merge with sibling
and delete key in between them If index page underflows, merge with sibling
and move down key in between them
![Page 12: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/12.jpg)
Amir Kamil 8/8/02 12
B+ Tree Deletion Example
Remove 9
93, 4, 6
9
13
16, 18
14 16, 17 18, 20
![Page 13: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/13.jpg)
Amir Kamil 8/8/02 13
B+ Tree Deletion Example
Remove 9
3, 4, 6
9
13
16, 18
14 16, 17 18, 20
![Page 14: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/14.jpg)
Amir Kamil 8/8/02 14
B+ Tree Deletion ExampleLeaf page underflow, so merge with sibling
and remove 9
3, 4, 6
13
16, 18
14 16, 17 18, 20
![Page 15: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/15.jpg)
Amir Kamil 8/8/02 15
B+ Tree Deletion ExampleIndex page underflow, so merge with sibling
and demote 13
13, 16, 18
3, 4, 6 14 16, 17 18, 20
![Page 16: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/16.jpg)
Amir Kamil 8/8/02 16
Threaded Trees
Binary trees have a lot of wasted space: the leaf nodes each have 2 null pointers
We can use these pointers to help us in inorder traversals
We have the pointers reference the next node in an inorder traversal; called threads
We need to know if a pointer is an actual link or a thread, so we keep a boolean for each pointer
![Page 17: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/17.jpg)
Amir Kamil 8/8/02 17
Threaded Tree Code
Example code:
class Node { Node left, right; boolean leftThread, rightThread;}
![Page 18: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/18.jpg)
Amir Kamil 8/8/02 18
Threaded Tree Example
8
75
3
11
13
1
6
9
![Page 19: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/19.jpg)
Amir Kamil 8/8/02 19
Threaded Tree Traversal
We start at the leftmost node in the tree, print it, and follow its right thread
If we follow a thread to the right, we output the node and continue to its right
If we follow a link to the right, we go to the leftmost node, print it, and continue
![Page 20: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/20.jpg)
Amir Kamil 8/8/02 20
Threaded Tree Traversal
8
75
3
11
13
1
6
9
Start at leftmost node, print it
Output1
![Page 21: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/21.jpg)
Amir Kamil 8/8/02 21
Threaded Tree Traversal
8
75
3
11
13
1
6
9
Follow thread to right, print node
Output13
![Page 22: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/22.jpg)
Amir Kamil 8/8/02 22
Threaded Tree Traversal
8
75
3
11
13
1
6
9
Follow link to right, go to leftmost node and print
Output135
![Page 23: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/23.jpg)
Amir Kamil 8/8/02 23
Threaded Tree Traversal
8
75
3
11
13
1
6
9
Follow thread to right, print node
Output1356
![Page 24: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/24.jpg)
Amir Kamil 8/8/02 24
Threaded Tree Traversal
8
75
3
11
13
1
6
9
Follow link to right, go to leftmost node and print
Output13567
![Page 25: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/25.jpg)
Amir Kamil 8/8/02 25
Threaded Tree Traversal
8
75
3
11
13
1
6
9
Follow thread to right, print node
Output135678
![Page 26: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/26.jpg)
Amir Kamil 8/8/02 26
Threaded Tree Traversal
8
75
3
11
13
1
6
9
Follow link to right, go to leftmost node and print
Output1356789
![Page 27: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/27.jpg)
Amir Kamil 8/8/02 27
Threaded Tree Traversal
8
75
3
11
13
1
6
9
Follow thread to right, print node
Output1356789
11
![Page 28: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/28.jpg)
Amir Kamil 8/8/02 28
Threaded Tree Traversal
8
75
3
11
13
1
6
9
Follow link to right, go to leftmost node and print
Output1356789
1113
![Page 29: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/29.jpg)
Amir Kamil 8/8/02 29
Threaded Tree Traversal CodeNode leftMost(Node n) { Node ans = n; if (ans == null) { return null; } while (ans.left != null) { ans = ans.left; } return ans;}
void inOrder(Node n) { Node cur = leftmost(n); while (cur != null) { print(cur); if (cur.rightThread) { cur = cur.right; } else { cur = leftmost(cur.right); } }}
![Page 30: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/30.jpg)
Amir Kamil 8/8/02 30
Threaded Tree Modification
We’re still wasting pointers, since half of our leafs’ pointers are still null
We can add threads to the previous node in an inorder traversal as well, which we can use to traverse the tree backwards or even to do postorder traversals
![Page 31: Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at the leaf nodes (leaf pages); all other nodes (index](https://reader030.vdocument.in/reader030/viewer/2022032521/56649d5e5503460f94a3df4b/html5/thumbnails/31.jpg)
Amir Kamil 8/8/02 31
Threaded Tree Modification
8
75
3
11
13
1
6
9