+ All Categories
Home > Documents > Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at...

Amir Kamil 8/8/02 1 B+ Trees Similar to B trees, with a few slight differences All data is stored at...

Date post: 21-Dec-2015
Category:
View: 214 times
Download: 1 times
Share this document with a friend
Popular Tags:
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 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
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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Amir Kamil 8/8/02 31

Threaded Tree Modification

8

75

3

11

13

1

6

9


Recommended