ADT Dictionary / Dynamic Set: Red-Black Trees
ADT Dictionary / Dynamic Set: Red-Black Trees
Red-black trees
Carola Wenk
Slides courtesy of Charles Leiserson with small
changes by Carola Wenk
3/3/05
3/3/05
3/3/05
This data structure requires an extra onebit color field in each node.
Red-black properties:
1. Every node is either red or black.
2. The root is black.
3. The leaves (NILs) are black.
4. If a node is red, then both its children are black.
5. All simple paths from any node x to a
descendant leaf have the same number of black
nodes = black-height(x).
AVL trees
2-3 trees
2-3-4 trees
B-trees
Red-black trees
Red-black trees
Examples:
3/3/05
77
77
33
NIL
18
18
NIL
10
10
88
33
h=4
22
22
11
11
NIL
NIL
18
18
NIL
26
26
NIL
10
10
88
NIL
22
22
11
11
NIL
26
26
NIL
NIL
3/3/05
77
77
33
NIL
18
18
NIL
10
10
88
33
NIL
22
22
11
11
NIL
26
26
NIL
18
18
NIL
10
10
88
NIL
22
22
11
11
NIL
26
26
NIL
NIL
3/3/05
77 bh = 2
33
NIL
18
18 bh = 2
NIL
bh = 1 10
10
bh = 1
88
22
22
11
11
NIL
26
26
NIL
NIL
3/3/05
10
3/3/05
11
3/3/05
12
3/3/05
13
3/3/05
14
Proof (continued)
15
We have
h h/2, since
at most half
the leaves on any path
are red.
3/3/05
16
Query operations
Modifying operations
The operations INSERT and DELETE cause
modifications to the red-black tree:
the operation itself,
color changes,
restructuring the links of the tree via
rotations.
3/3/05
17
3/3/05
Rotations
IDEA: Insert x in tree. Color x red. Only redblack property 4 might be violated. Move the
violation up the tree by recoloring until it can
be fixed with rotations and recoloring.
AA
LEFT-ROTATE(A)
AA
18
RIGHT-ROTATE(B)
BB
BB
Example:
77
33
18
18
10
10
88
22
22
11
11
26
26
19
3/3/05
20
IDEA: Insert x in tree. Color x red. Only redblack property 4 might be violated. Move the
violation up the tree by recoloring until it can
be fixed with rotations and recoloring.
77
Example:
33
Insert x =15.
Recolor, moving the
violation up the tree.
RIGHT-ROTATE(18).
18
18
10
10
88
22
22
11
11
26
26
15
15
3/3/05
21
3/3/05
3/3/05
18
18
15
15
10
10
88
22
22
11
11
26
26
15
15
22
Example:
77
Insert x =15.
Recolor, moving the 33
88
violation up the tree.
RIGHT-ROTATE(18).
LEFT-ROTATE(7) and recolor.
10
10
11
11
18
18
IDEA: Insert x in tree. Color x red. Only redblack property 4 might be violated. Move the
violation up the tree by recoloring until it can
be fixed with rotations and recoloring.
77
Example:
33
Insert x =15.
88
Recolor, moving the
violation up the tree.
RIGHT-ROTATE(18).
LEFT-ROTATE(7) and recolor.
77
22
22
26
26
23
3/3/05
10
10
18
18
11
11
15
15
22
22
26
26
24
Pseudocode
Graphical notation
RB-INSERT(T, x)
TREE-INSERT(T, x)
color[x] RED only RB property 4 can be violated
while x root[T] and color[p[x]] = RED
do if p[x] = left[p[p[x]]
then y right[p[p[x]]
y = aunt/uncle of x
if color[y] = RED
then Case 1
else if x = right[p[x]]
then Case 2 Case 2 falls into Case 3
Case 3
else then clause with left and right swapped
color[root[T]] BLACK
3/3/05
Let
All
25
Recolor
y
DD
CC
new x
CC
DD
AA
BB
AA
BB
(Or, children of
A are swapped.)
3/3/05
26
Case 2
CC
3/3/05
Case 1
AA
27
BB
LEFT-ROTATE(A)
CC
BB
AA
Transform to Case 3.
3/3/05
28
Case 3
CC
BB
Analysis
RIGHT-ROTATE(C)
y
AA
AA
BB
CC
Done! No more
violations of RB
property 4 are
possible.
3/3/05
29
3/3/05
30