Download presentation
Presentation is loading. Please wait.
1
Multi-Way search Trees 1.2-3 Trees: a. Nodes may contain 1 or 2 items. b. A node with k items has k + 1 children c. All leaves are on same level.
2
Example A 2-3 tree storing 18 items. 20 80 5 30 70 90 100 2 410 2540 507585 95 110 120
3
Updating Insertion: Find the appropriate leaf. If there is only one item, just add to leaf. Insert(23); Insert(15) If no room, move middle item to parent and split remaining two items among two children. Insert(3);
4
Insertion Insert(3); 20 80 5 30 70 90 100 2 3 4 10 15 23 25 40 507585 95 110 120
5
Insert(3); In mid air… 20 80 5 30 70 90 100 210 15 23 2540 507585 95 110 120 3 4
6
Done…. 20 80 3 530 70 90 100 210 15 23 2540 507585 95 110 120 4
7
Tree grows at the root… Insert(45); 20 80 3 530 70 90 100 210 2540 45 507585 95 110 120 4
8
New root: 80 3 530 90 100 210 25407585 95 110 120 4 45 20 50 70
9
Delete If item is not in a leaf exchange with in- order successor. If leaf has another item, remove item. Examples: Remove(110); (Insert(110); Remove(100); ) If leaf has only one item but sibling has two items: redistribute items. Remove(80);
10
Remove(80); Step 1: Exchange 80 with in-order successor. 85 3 530 90 100 210 25407580 95 110 120 4 45 20 50 70
11
Remove(80); Redistribute 85 3 530 95 110 210 25407590 100 120 4 45 20 50 70
12
Some more removals… Remove(70); Swap(70, 75); Remove(70); “Merge” Empty node with sibling; Join parent with node; Now every node has k+1 children except that one node has 0 items and one child. Sibling can spare an item: redistribute. 95110
13
Delete(70) 85 3 530 95 110 210 2540 90 100 120 4 45 20 50 75
14
New tree: Delete(85) will “shrink” the tree. 95 3 530 110 210 254090100 120 4 45 20 50 85
15
Details 1. Swap(85, 90) //inorder successor 2. Remove(85) //empty node created 3. Merge with sibling 4. Drop item from parent// (50,90) empty Parent 5. Merge empty node with sibling, drop item from parent (95) 6. Parent empty, merge with sibling drop item. Parent (root) empty, remove root.
16
“Shorter” 2-3 Tree 3 530 95 110 210 2540100 120 4 20 45 50 90
17
Deletion Summary If item k is present but not in a leaf, swap with inorder successor; Delete item k from leaf L. If L has no items: Fix(L); Fix(Node N); //All nodes have k items and k+1 children // A node with 0 items and 1 child is possible, it will have to be fixed.
18
Deletion (continued) If N is the root, delete it and return its child as the new root. Example: Delete(8); 5 38 5 3 12 3 5 3 Return 3 5
19
Deletion (Continued) If a sibling S of N has 2 items distribute items among N, S and the parent P; if N is internal, move the appropriate child from S to N. Else bring an item from P into S; If N is internal, make its (single) child the child of S; remove N. If P has no items Fix(P) (recursive call)
20
(2,4) Trees Size Property: nodes may have 1,2,3 items. Every node, except leaves has size+1 children. Depth property: all leaves have the same depth. Insertion: If during the search for the leaf you encounter a “full” node, split it.
21
(2,4) Tree 10 45 60 3 8 25 50 55 70 90 100
22
Insert(38); 3 8 25 38 50 55 70 90 100 45 10 60
23
Insert(105) Insert(105); 3 8 25 38 50 55 100 105 45 10 60 90 70
24
Removal As with BS trees, we may place the node to be removed in a leaf. If the leaf v has another item, done. If not, we have an UNDERFLOW. If a sibling of v has 2 or 3 items, transfer an item. If v has 2 or 3 siblings we perform a transfer
25
Removal If v has only one sibling with a single item we drop an item from the parent to the sibling, remove v. This may create an underflow at the parent. We “percolate” up the underflow. It may reach the root in which case the root will be discarded and the tree will “shrink”.
26
Delete(15) 35 2060 6 15 40 50 70 80 90
27
Delete(15) 35 2060 6 40 50 70 80 90
28
Continued Drop item from parent 35 60 6 20 40 50 70 80 90
29
Fuse 35 60 6 20 40 50 70 80 90
30
Drop item from root Remove root, return the child. 35 60 6 20 40 50 70 80 90
31
Summary Both 2-3 trees and 2-4 trees make it very easy to maintain balance. Insertion and deletion easier for 2-4 tree. Cost is waste of space in each node. Also extra comparison inside each node. Does not “extend” binary trees.
32
Red-Black Trees Root property: Root is BLACK. External Property: Every external node is BLACK (external nodes: null nodes) Internal property: Children of a RED node are BLACK. Depth property: All external nodes have the same BLACK depth.
33
A RedBlack tree. Black depth 3. 30 1570 20 85 10 5 60 6550 40 9080 55
34
RedBlack Insertion
35
Red Black Trees, Insertion 1. Find proper external node. 2.Insert and color node red. 3.No black depth violation but may violate the red-black parent-child relationship. 4.Let: z be the inserted node, v its parent and u its grandparent. If v is red then u must be black.
36
Color adjustments. Red child, red parent. Parent has a black sibling (Zig-Zag). a bu v w z Vl Zl Zr
37
Rotation Z-middle key. Black height does not change! No more red-red. a bz v w u Vl Zl Zr
38
Color adjustment II a bu v w z Vr Zl Zr
39
Rotation II v-middle key a bv z u ZrZl w Vr
40
Recoloring Red child, red parent. Parent has a red sibling. a bu v w z Vl Zr
41
Color adjustment Red-red may move up… a bu v w z Vl Zr Zl
42
Red Black Tree Insert 10 – root 10
43
Red Black Tree Insert 10 – root (external nodes not shown) 10
44
Red Black Tree Insert 85 10 85
45
Red Black Tree Insert 15 10 85 15
46
Red Black Tree Rotate – Change colors 15 1085
47
Red Black Tree Insert 70 15 1085 70
48
Red Black Tree Change Color 15 1085 70
49
Red Black Tree Insert 20 (sibling of parent is black) 20 15 1085 70
50
Red Black Tree Rotate 15 1070 20 85
51
Red Black Tree Insert 60 (sibling of parent is red) 15 1070 20 85 60
52
Red Black Tree Change Color 15 1070 20 85 60
53
Red Black Tree Insert 30 (sibling of parent is black) 15 1070 20 85 60 30
54
Red Black Tree Rotate 15 1070 30 85 6020
55
Red Black Tree Insert 50 (sibling ?) 15 1070 30 85 6020 50
56
Red Black Tree Insert 50 (sibling of 70 is black!) 15 1070 30 85 6020 50 Oops, red-red. ROTATE! Child 30 Parent 70 gramps 15
57
Red Black Tree Double Rotate – Adjust colors 30 1570 20 85 10 60 50 Child-Parent-Gramps Middle goes to “top” Previous top becomes child. Its right child is middles left child.
58
Red Black Tree Insert 65 30 1570 20 85 10 60 6550
59
Red Black Tree Insert 80 30 1570 20 85 10 60 6550 80
60
Red Black Tree Insert 90 30 1570 20 85 10 60 6550 9080
61
Red Black Tree Insert 40 30 1570 20 85 10 60 6550 40 9080
62
Red Black Tree Adjust color 30 1570 20 85 10 60 6550 40 9080
63
Red Black Tree Insert 5 30 1570 20 85 10 5 60 6550 40 9080
64
Red Black Tree Insert 55 30 1570 20 85 10 5 60 6550 40 9080 55
65
Delete We first note that a red node is either a leaf or must have two children. Also, if a black node has a single child it must be a red leaf. Swap X with inorder successor. If inorder successor is red, (must be a leaf) delete. If it is a single child parent, delete and change its child color to black. In both cases the resulting tree is a legit red-black tree.
66
Delete demo Delete 30: Swap with 40 and delete red leaf. 30 1570 20 85 10 5 60 6550 40 9080 55
67
40 1570 20 85 10 5 60 6550 9080 55
68
Inorder successor is Black Change colors along the traverse path so that the leaf to be deleted is RED. Delete 15. 30 1570 20 85 10 5 60 6550 40 9080 55
69
General strategy As you traverse the tree to locate the inorder successor let X be the current node, T its sibling and P the parent. Color the root red. Retain: “the color of P is red.” If all children of X and T are black: P Black, X Red, T Red
70
XT P Both children of X and T are black: P Black X Red, T Red A B
71
XT P If X is a leaf we are done. Recall: x is the inorder successor! AB
72
XT P C1C1 B C D Zig-Zag, C 1 Middle key. A Even though we want to proceed with X we have a red-red violation that needs to be fixed. T has a red child. Even though we want to proceed with X we have a red-red violation that needs to be fixed. T has a red child.
73
PT C1C1 B CD X A Note: black depth remains unchanged!
74
Third case XT P C1C1 B C D A T middle key. B will become P’s right child. No change in depth.
75
PC1C1 T B CD A X
76
If both children of T are red select one of the two rotations. If the right child of X is red make it the new parent (it is on the inorder-successor path). If the left child of X is red:
77
T P X E C1C1 B Y C A B Left as a drill. Root of C is black Otherwise, continue X has a red child Root of C is black Otherwise, continue X has a red child
78
T P X E C1C1 Y C A B
79
30 1570 20 85 10 5 60 6550 40 9080 55 Delete 15
80
30 20 70 10 85 15 5 60 6550 40 9080 55 Delete 15 30 15 70 10 85 20 5 60 6550 40 9080 55 Swap (15, 20)
81
30 15 70 10 85 20 5 60 6550 40 9080 55 Delete 15 Third case: (mirror image) X (15) has two black children (Nulls) Sibling has one red and one black child.
82
3070 1085 20 5 60 6550 40 9080 55 Delete 15
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.