RedBlack Trees v 6 8 3 4 2004
Red-Black Trees v 6 8 3 4 © 2004 Goodrich, Tamassia Red-Black Trees z 1
From 2 -3 -4 to Red-Black Trees A red-black (RB) tree is a representation of a 2 -3 -4 tree by means of a binary tree whose nodes are colored or black In comparison with its associated 2 -3 -4 tree, a red-black tree has Same logarithmic time performance Easier to implement (with a single node type) Harder to understand n n n 4 3 4 5 5 3 2 6 7 3 OR 6 5 2 7 2
Red-Black Trees An RB tree is a BST with the following properties: n n Root Property: the root is black External Property: every leaf is black Internal Property: the children of a red node are black No path from the root to the leaf has two consecutive red nodes. Depth Property: all the leaves have the same black depth Each of the paths from the root to the leaves have the same number of black nodes. 9 4 2 15 6 12 21 7 Red-Black Trees 3
More about RB Trees Insertion n n Nodes are inserted in the same way as a BST Tree is updated by restructuring and recoloring Red-Black Trees 4
Height of a Red-Black Tree Theorem: A red-black tree storing n entries has height O(log n) Proof: n The height of a red-black tree is at most twice the height of its associated 2 -3 -4 tree, which is O(log n) The search algorithm for a binary search tree is the same as that for a binary search tree By the above theorem, searching in a red-black tree takes O(log n) time How about an alternative proof without using 2 -3 -4 trees? Red-Black Trees 5
Conversion between 2 -3 -4 and RB Trees 2 -3 -4 tree Red-black trees Red-Black Trees 6
Insertion To perform operation put(k, o), we execute the insertion algorithm for binary search trees and color red the newly inserted node z unless it is the root n n n We preserve the root, external, and depth properties If the parent v of z is black, we also preserve the internal property and we are done Else (v is red ) we have a double red (i. e. , a violation of the internal property), which requires a reorganization of the tree Example where the insertion of 4 causes a double red: v 6 3 8 z The inserted node is always red, why? v 6 8 3 4 z 7
Remedying a Double Red Consider a double red with child z and parent v, and let w be the sibling of v Case 1: w is black n n Case 2: w is red The double red is an incorrect replacement of a 4 -node Restructuring: we change the 4 -node replacement w 4 2 Uncle of z z 7 v n n The double red corresponds to an overflow Recoloring: we perform the equivalent of a split w 6 4 6 7 4 2 z 7 v 6 2 4 6 7 . . 2. . Red-Black Trees 8
Restructuring (1/2) A restructuring remedies a child-parent double red when the uncle of the inserted node is black It is equivalent to restoring the correct replacement of a 4 -node The internal property is restored and the other properties are preserved z 6 4 v v w 7 7 2 4 z w 2 6 Uncle of z 4 6 7 . . 2. . Red-Black Trees 9
Restructuring (2/2) There are four restructuring configurations depending on whether the double red nodes are left or right children 6 2 6 4 6 2 4 4 2 2 4 6 4 2 6 Red-Black Trees 10
Recoloring A recoloring remedies a child-parent double red when the uncle of the inserted node is red The parent v and its sibling w become black and the grandparent u becomes red, unless it is the root To keep the depth property It is equivalent to performing a split on a 5 -node The double red violation may propagate to the grandparent u w Uncle of z 4 2 z 7 v w May propagate… 4 2 6 z 7 v 6 … 4 … 2 4 6 7 2 Red-Black Trees 6 7 11
Summary of Insertion Two cases of insertions n Uncle is black Restructure w Takes O(1) w Could be a single or double rotations n Uncle is red Recolor w Takes O(log n) since it may propagate w Corresponds to splitting a node in a 2 -3 -4 tree Red-Black Trees 12
Insert 15 Example of Insertion (1/3) Insert 7 Recolor Insert 12 Insert 3 Red-Black Trees Restructure Insert 5 13
Example of Insertion (2/3) Insert 14 Insert 18 Restructure Recolor Red-Black Trees 14
Example of Insertion (3/3) Insert 16 Restructure Do ub Insert 17 le red ! Cascaded restructure Recolor Red-Black Trees 15
Resources of RB Trees Insertion animation n Animation w Pay attention to the propagation… n More interactive animation Insertion rule n n Rationale behind insertion Proof of logarithmic height (w/o using 2 -34 trees) Red-Black Trees 16
Analysis of Insertion Algorithm put(k, o) 1. We search for key k to locate the insertion node z 2. We add the new entry (k, o) at node z and color z red 3. while double. Red(z) if is. Black(sibling(parent(z))) z restructure(z) return else { sibling(parent(z) is red } z recolor(z) Red-Black Trees Recall that a red-black tree has O(log n) height Step 1 takes O(log n) time because we visit O(log n) nodes Step 2 takes O(1) time Step 3 takes O(log n) time because we perform n n O(log n) recolorings, each taking O(1) time, and at most one restructuring taking O(1) time Thus, an insertion in a redblack tree takes O(log n) time 17
Deletion To do erase(k), we first execute the deletion algorithm for BST Let v be the internal node removed, w the external node removed, and r the sibling of w n n If either v or r was red, we color r black and we are done Else (v and r were both black) we color r double black, which is a violation of the depth property requiring a update of the tree Example where the deletion of 8 causes a double black: 6 8 3 4 r 6 v w Red-Black Trees 3 r 4 18
Remedying a Double Black To remedy a double black node w with sibling y: Case 1: y is black and has a red child n We perform a restructuring, equivalent to a transfer , and we are done Case 2: y is black and its children are both black n We perform a recoloring, equivalent to a fusion, which may propagate up the double black violation Case 3: y is red n We perform an adjustment, equivalent to choosing a different representation of a 3 -node, after which either Case 1 or Case 2 applies Deletion in a red-black tree takes O(log n) time Red-Black Trees 19
Case 1: Restructuring Either R or B 20
Case 2: Recoloring 21
Case 3: Adjustment 22
Example of Deletion (1/3) Delete 3 Case 1 of restructuring (Transfer in 2 -3 -4 trees) Restructure Delete 12 23
Example of Deletion (2/3) Delete 17 Delete 18 Delete 15 Recolor Case 2 of recoloring (Fusion in 2 -3 -4 trees) 24
Example of Deletion (3/3) Case 3 of adjustment (A different rep. of 3 -node ) Case 3 of adjustment (Fusion in 2 -3 -4 trees ) Delete 16 Recolor Adjust 25
Case 1: Restructuring Case 1 of restructuring (Transfer in 2 -3 -4 trees) Restructure 7, 14, 16 4, 5 x 15 5, 14, 16 Transfer 17, 18 4 7 15 17, 18 26
Case 2: Recoloring Case 2 of recoloring (Fusion in 2 -3 -4 trees) Recolor 5, 14, 16 4 7 15 5, 14 Fusion x 4 Red-Black Trees 7 15, 16 27
Case 3: Adjustment Case 3 of adjustment (A different rep. of 3 -node ) Case 3 of adjustment (Fusion in 2 -3 -4 trees ) Recolor Adjust 5, 14 4 7 5 Fusion x 4 7, 14 28
Red-Black Tree Update Insertion (remedy double red) Red-black tree action 2 -3 -4 tree action result restructuring change of 4 -node representation double red removed recoloring split double red removed or propagated up Deletion (remedy double black) Red-black tree action 2 -3 -4 tree action result restructuring transfer double black removed recoloring fusion double black removed or propagated up adjustment change of 3 -node representation restructuring or recoloring follows 29
- Slides: 29