Red-Black Trees 6 v 8 3 z 4 © 2004 Goodrich, Tamassia Red-Black Trees 1 From (2,4) to Red-Black Trees A red-black tree is a representation of a (2,4) tree by means of a binary tree whose nodes are colored red or black In comparison with its associated (2,4) tree, a red-black tree has same logarithmic time performance simpler implementation with a single node type 4 3 4 5 3 © 2004 Goodrich, Tamassia 5 2 6 7 3 OR Red-Black Trees 6 5 2 7 2 Red-Black Trees A red-black tree can also be defined as a binary search tree that satisfies the following properties: Root Property: the root is black External Property: every leaf is black Internal Property: the children of a red node are black Depth Property: all the leaves have the same black depth 9 15 4 2 6 12 21 7 © 2004 Goodrich, Tamassia Red-Black Trees 3 Height of a Red-Black Tree Theorem: A red-black tree storing n entries has height O(log n) Proof: The height of a red-black tree is at most twice the height of its associated (2,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 © 2004 Goodrich, Tamassia Red-Black Trees 4 Insertion To perform operation insert(k, o), we execute the insertion algorithm for binary search trees and color red the newly inserted node z unless it is the root 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 © 2004 Goodrich, Tamassia Red-Black Trees 5 Insertion v 3 © 2004 Goodrich, Tamassia 6 8 Red-Black Trees 6 Insertion: double red 6 v 3 8 z 4 © 2004 Goodrich, Tamassia Red-Black Trees 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 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 z 7 v 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 .. © 2004 Goodrich, Tamassia Red-Black Trees 8 Restructuring A restructuring remedies a child-parent double red when the parent red node has a black sibling 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 4 6 7 4 6 7 .. 2 .. © 2004 Goodrich, Tamassia .. 2 .. Red-Black Trees 9 Restructuring (cont.) There are four restructuring configurations depending on whether the double red nodes are left or right children 2 6 6 4 6 2 4 4 2 2 4 6 4 2 © 2004 Goodrich, Tamassia 6 Red-Black Trees 10 Recoloring A recoloring remedies a child-parent double red when the parent red node has a red sibling The parent v and its sibling w become black and the grandparent u becomes red, unless it is the root It is equivalent to performing a split on a 5-node The double red violation may propagate to the grandparent u w 4 2 z 7 v w 4 2 6 7 6 … 4 … 2 4 6 7 2 © 2004 Goodrich, Tamassia z v Red-Black Trees 6 7 11 Exercise 3 2 4 1 © 2004 Goodrich, Tamassia Red-Black Trees 12 Exercise 3 3 4 2 4 2 1 1 … 3 … 1 2 3 4 1 2 © 2004 Goodrich, Tamassia Red-Black Trees 4 13 Analysis of Insertion Recall that a red-black tree has O(log n) height Search for insertion location takes O(log n) time because we visit O(log n) nodes Addition to the node takes O(1) time Restructuring or recolouring takes O(log n) time because we perform O(log n) recolorings, each taking O(1) time, and at most one restructuring taking O(1) time Thus, an insertion in a red-black tree takes O(log n) time © 2004 Goodrich, Tamassia Red-Black Trees 14 Deletion To perform operation remove(k), we first execute the deletion algorithm for binary search trees Let v be the internal node removed, w the external node removed, and r the sibling of w If either v of 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 internal property requiring a reorganization of the tree © 2004 Goodrich, Tamassia Red-Black Trees 15 Deletion: double black 6 8 3 4 w v r 6 r 3 4 © 2004 Goodrich, Tamassia Red-Black Trees 16 Underflow in (2,4) trees Double black corresponds to underflow in (2,4) trees: 9 14 2 5 7 © 2004 Goodrich, Tamassia 10 Red-Black Trees 17 Underflow and Fusion To handle an underflow at node v with parent u, we consider two cases Case 1: the adjacent siblings of v are 2-nodes Fusion operation: we merge v with an adjacent sibling w and move an entry from u to the merged node v' After a fusion, the underflow may propagate to the parent u u u 9 14 2 5 7 © 2004 Goodrich, Tamassia 10 w v Red-Black Trees 2 5 7 9 10 14 18 v' Underflow and Transfer Case 2: an adjacent sibling w of v is a 3-node or a 4node Transfer operation: 1. we move a child of w to v 2. we move an item from u to v 3. we move an item from w to u After a transfer, no underflow occurs u u 4 9 2 © 2004 Goodrich, Tamassia 6 8 4 8 w v Red-Black Trees 2 6 w 9 v 19 Remedying a Double Black The algorithm for remedying a double black node w with sibling y considers three cases Case 1: y is black and has a red child We perform a restructuring, equivalent to a transfer , and we are done. 6 6 y r 3 3 4 Corresponding (2,4) tree 4 © 2004 Goodrich, Tamassia Red-Black Trees 20 Remedying a Double Black 6 6 y r 3 3 4 4 4 4 3 3 © 2004 Goodrich, Tamassia 6 Red-Black Trees 6 21 Deletion: case 2 (both y’s children are black) 6 y 3 8 w v r 6 y © 2004 Goodrich, Tamassia Red-Black Trees 3 r 22 Remedying a Double Black Case 2: sibling y of r is black and its children are both black We perform a recoloring, equivalent to a fusion, which may propagate up the double black violation x 6 6 y 3 r 3 © 2004 Goodrich, Tamassia Red-Black Trees Corresponding (2,4) tree 23 Remedying a Double Black x 6 6 y 3 r 3 fusion 6 y 36 © 2004 Goodrich, Tamassia 3 r 36 Red-Black Trees 24 Deletion: case 3 (y is red) 6 y 8 3 2 4 w v r 6 r 3 2 © 2004 Goodrich, Tamassia Red-Black Trees 4 25 Remedying a Double Black Case 3: y is red We perform an adjustment, equivalent to choosing a different representation of a 3-node, after which either Case 1 or Case 2 applies 6 2 r 3 2 3 r 4 4 © 2004 Goodrich, Tamassia 6 Red-Black Trees 26 Deletion complexity Deletion in a red-black tree takes O(log n) time © 2004 Goodrich, Tamassia Red-Black Trees 27 Top-down insertion In this lecture (and in the Goodrich and Tamassia textbook) we do bottom-up insertion: first insert, then recolour (second passage through the tree). In red-black trees, it is also possible to do recolouring as you go down the tree looking for a place to insert a node. This makes insertion a top-down algorithm (only one passage through the tree). See Weiss, Data structures and problem solving using Java, Addison-Wesley 2001, Chapter 19.5.3. © 2004 Goodrich, Tamassia Red-Black Trees 28 Red-Black Tree Reorganization Insertion remedy double red Red-black tree action (2,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,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 © 2004 Goodrich, Tamassia Red-Black Trees 29