Chapter 6 - Multiway-Tree
Chapter 6 - Multiway-Tree
keys < K1 K1<= keys < K2 K2<= keys < K3 K3<= keys
Cao Hoang Tru 2
CSE Faculty - HCMUT 17 November 2008
M-Way Search Trees
50 100 150
60 70 90 110 120
75
entry
key <key type>
key data data <data type>
rightPtr <pointer>
end entry
node
num firstPtr <pointer>
entries ...
numEntries <integer>
entries <array[1 .. m-1] of entry>
end node
42
16 21 58 76 81 93
11 14 17 19 20 21 22 23 24 45 52 63 65 74 78 79 85 87 94 97
m=5
Cao Hoang Tru 7
CSE Faculty - HCMUT 17 November 2008
B-Tree Insertion
• Insert the new entry into a leaf node.
• If the leaf node is overflow, then split it
and insert its median entry into its parent.
21
Insert 97
11 14 21 78 97 11 14 78 97
overflow
11 14 63 74 78 85 97 11 14 63 74 85 97
overflow
11 14 42 45 57 63 74 85 97 11 14 42 45 63 74 85 97
overflow
Cao Hoang Tru 9
CSE Faculty - HCMUT 17 November 2008
B-Tree Insertion
Insert 20, 16, 19
21 57 78 16 21 57 78
11 14 16 19 20 63 74 85 97 11 14 19 20 63 74 85 97
overflow 42 45 42 45
42
Insert 52, 30, 21
16 21 57 78 16 21 57 78
11 14 19 20 63 74 85 97 11 14 21 30 45 52 85 97
21 30 42 45 52 19 20 63 74
overflow
11 14 21 74 78 85 11 14 21 74 85
Delete 63
63 21
11 14 21 74 85 11 14 74 85
11 14 74 85 11 14 74
underflow
(node has fewer than the
min num of entries)
Delete 21
21 14
11 14 74 85 11 74 85
Original node 14 42 45 63
21
Rotate parent
data down 14 21 42 45 63
42
Rotate data to
parent
14 21 42 45 63
42
Shift entries
left 14 21 45 63
Cao Hoang Tru 23
CSE Faculty - HCMUT 17 November 2008
Balance
Borrow from left ... 78 ...
Original node 45 63 74 85
... 78 ...
Shift entries
right 45 63 74 85
... 78 ...
Rotate parent
data down 45 63 74 78 85
... 74 ...
Rotate data
up 45 63 78 85
Cao Hoang Tru 24
CSE Faculty - HCMUT 17 November 2008
Combine
21 57 78 21 57 78
42 45 63 42 45 57 63
59 61 65 71 59 61 65 71
21 57 78 21 78
42 45 57 63 42 45 57 63
59 61 65 71 59 61 65 71
21 58
11 14 19 20 42 45 63 74 87