Professional Documents
Culture Documents
Cormen Algo-Lec10
Cormen Algo-Lec10
6.046J/18.401J
LECTURE 10
Balanced Search Trees
• Red-black trees
• Height of a red-black tree
• Rotations
• Insertion
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.1
Balanced search trees
• 2-3 trees
Examples: • 2-3-4 trees
• B-trees
• Red-black trees
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.2
Red-black trees
33 18
18
NIL NIL
10
10 22
22 h=4
NIL
88 11
11 26
26
NIL NIL NIL NIL NIL NIL
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.4
Example of a red-black tree
77
33 18
18
NIL NIL
10
10 22
22
NIL
88 11
11 26
26
NIL NIL NIL NIL NIL NIL
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.5
Example of a red-black tree
77
33 18
18
NIL NIL
10
10 22
22
NIL
88 11
11 26
26
NIL NIL NIL NIL NIL NIL
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.6
Example of a red-black tree
77
33 18
18
NIL NIL
10
10 22
22
NIL
88 11
11 26
26
NIL NIL NIL NIL NIL NIL
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.7
Example of a red-black tree
77 bh = 2
33 18
18 bh = 2
NIL NIL bh = 1 10
10 22
22
NIL
bh = 1 88 11
11 26
26
bh = 0 NIL NIL NIL NIL NIL NIL
h ≤ 2 lg(n + 1).
INTUITION:
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.9
Height of a red-black tree
h ≤ 2 lg(n + 1).
INTUITION:
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.10
Height of a red-black tree
h ≤ 2 lg(n + 1).
INTUITION:
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.11
Height of a red-black tree
h ≤ 2 lg(n + 1).
INTUITION:
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.12
Height of a red-black tree
h ≤ 2 lg(n + 1).
INTUITION:
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.13
Height of a red-black tree
h ≤ 2 lg(n + 1).
INTUITION:
• We have
h′ ≥ h/2, since
at most half h
the leaves on any path
are red.
• The number of leaves
in each tree is n + 1
⇒ n + 1 ≥ 2h' h′
⇒ lg(n + 1) ≥ h' ≥ h/2
⇒ h ≤ 2 lg(n + 1).
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.15
Query operations
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.16
Modifying operations
• color changes,
• restructuring the links of the tree via
“rotations”.
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.17
Rotations
BB RIGHT-ROTATE(B) AA
AA LEFT-ROTATE(A) BB
γγ αα
αα ββ ββ γγ
• a ∈ α, b ∈ β, c ∈ γ ⇒ a ≤ A ≤ b ≤ B ≤ c.
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.18
Insertion into a red-black tree
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.19
Insertion into a red-black tree
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.20
Insertion into a red-black tree
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.21
Insertion into a red-black tree
RB-INSERT(T, x)
TREE-INSERT(T, x)
color[x] ← RED ⊳ only RB property 3 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
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.24
Graphical notation
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.25
Case 1
Recolor
CC CC new x
AA DD y AA DD
x BB BB
CC LEFT-ROTATE(A) CC
y y
AA BB
x BB x AA
Transform to Case 3.
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.27
Case 3
CC
RIGHT-ROTATE(C)
BB
y
BB
AA CC
x AA
Done! No more
violations of RB
property 3 are
possible.
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.28
Analysis
October 19, 2005 Copyright © 2001-5 by Erik D. Demaine and Charles E. Leiserson L7.29