Red-Black Trees

advertisement
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
Download