AVL Trees & Red-Black Trees
description
Transcript of AVL Trees & Red-Black Trees
AVL Trees & Red-Black Trees
Min ChenSchool of Computer Science and Engineering Seoul National University
Data Structure: Chapter 8
Content
Motivation of Red-Black Trees Balanced and Unbalanced Trees AVL Trees
Definition of Red-Black Trees Operations for Red-Black Trees
Search Insertion
Motivation of Red-Black Tree (1)
20
30
35
25
10
155
Balanced and Unbalanced Trees
Motivation of Red-Black Tree (2) AVL-Tree
The balance factor of a node is the height of its left subtree minus the height of its right subtree
A node with balance factor 1, 0, or -1 is considered balanced
60
40
50
30
Balance Factor:2-0=2
Balance Factor:0-1=-1
45
Unbalanced
Motivation of Red-Black Tree (2) AVL-Tree: Rotation Operation
AVL-Tree: Rotation Operation
Motivation of Red-Black Tree (2)
Left Right Case60
40
50
30
45
60
40
50
30
45
60
40
50
30
45
Definition of Red-Black Trees Definition: a binary tree, satisfying:
1. Every node is colored either red or black
2. The root is black3. If a node is red, its children must be
black▪ consecutive red nodes are disallowed
4. Every path from a node to a null reference must contain the same number of black nodes
Example of Red-Black Trees The insertion sequence is
10, 85, 15, 70, 20, 60, 30, 50, 65, 80, 90, 40, 5, 55
30
15
5 50
10
70
8560
40 55
80 9065
20
Red-Black Trees: Properties
• Each path must contain the same number of black nodes. (Rule #4)
• Consecutive red nodes are not allowed. (Rule #3)• The longest path is at most twice the length of the shortest path
Red-Black Trees: Properties
B = total black nodes from root to leaf
N = total all nodes H = height
)1log(2)1log(
)1log()1log(21
2)1log()1log(22log2log
212
1212
2
2
2
NHN
NBN
BNNBBB
N
N
BB
BB
BB
All operations guaranteed logarithmic!
Insertion in Red-Black Trees A new node must be colored red
Why?▪ A new item is always inserted as a leaf in the
tree▪ If we color a new item black, then the number
of black nodes from root would be different (violate property #4)
If the parent is black, no problem. If the parent is red, we create two
consecutive red nodes (violate property #3)▪ Thus, we have to do some
rotating/recolouring…
A B
G
X
SP
C D E A B
GX
S
P
C
D E
Single RotationX: new nodeP: parentS: siblingG:
Grandparent
Case after insertion: Consecutive red (P & X) Sibling of parent (S) is black X is “outer node” (left-left or right-
right)
B C
G
X
SP
A D E A B
GP
S
X
C
D E
Double RotationX: new nodeP: parentS: siblingG:
Grandparent
Case after insertion: Consecutive red (P & X) Sibling of parent (S) is black X is “inner node” (left-right or left)
Single Rotation (bottom-up) Case after insertion:
Consecutive red Sibling of parent is red Outer node (left-left or right-right)
A B
G
X
SP
C D E A B
GX
S
P
C
D EBut what if P’s parent is red? We have to keep going up the tree all the way to the root
Top-Down Insertion
The solution: prevent S from ever being red!
Starting from the root (searching for insertion point) Never allow 2 red siblings If we see a node X with 2 red children,
do a colour flip.X
C2C1
X
C1 C2
Color Flip
Maintains property #4 Possible violation of #3: if X’s parent is
red!▪ Do single or double rotation▪ X’s parent’s sibling can never be red!
Set the root to black (to maintain property #2)
X
C2C1
X
C1 C2
A B
G
X
SP
C D E
Color Flip (2)
A B
G
X
SP
C D E
If we do the colour flipping on the way down to the insertion point, we will never reach a condition where P & S are red!
30
15
5
10
70
8560
50
55
80 9065
20
40
Example: Insert 18
18
30
15
5
10
70
8560
50
55
80 9065
20
40
Example: Insert 2
18
2
30
15
2
5
70
8560
50
55
80 9065
20
40
Example: Insert 2
1810
30
15
2
5
70
8560
50
55
80 9065
20
40
Example: Insert 45 (Illustration)
1810
45
30
15
2
5
70
8560
50
55
80 9065
20
40
Example: Insert 45 (Top-Down Color Flip)
1810
45
Color-flip!
30
15
2
5
70
8560
50
55
80 9065
20
40
Example: Insert 45 (Top-Down Color Flip)
1810
45
Color-flip!
30
15
2
5
70
8560
50
55
80 9065
20
40
Example: Insert 45 (Single Rotate)
1810
45
30
15
2
5 70
85
60
50
55
80 90
65
20
40
Example: Insert 45 (Single Rotate)
1810
45
Red-Black Tree Insertion: Exercise The insertion sequence is 10, 85, 15,
70, 20, 60, 30, 50, 65, 80, 90, 40, 5, 55
Red-Black Tree: Deletion Deletion in BST: only leaf nodes or nodes with one
child are really deleted (Why?) If the deleted node is red: no problem (all
properties maintained).Leaf nodes:
Single child nodes:
Top-Down Deletion If node to be deleted is black violate property #4 Always ensure that the node to be deleted is red. Top-down traversal from root (looking for node to
be deleted):
X: visited nodeP: parentS: sibling
B
P
SX
A C D
Idea: make sure that X is red!
Possible cases
P is red (inductive invariant) X and S are black (result of property #3)
2 cases: 1. Both X’s children (A & B) are black 2. X has at least one red child (A, B, or both)
B
P
SX
A C D
Case 1: Both X’s children are black Depends on children of S (C & D):
Both C & D are black: simply colour-flip:
B
P
SX
A C D B
P
SX
A C D
Case 1: Both X’s children are black
Outer child of S (C) is Red: do a single rotation and recolour
B
P
SX
A C D
C
S
DP
B
X
A
Case 1: Both X’s children are black Inner child of S (C) is Red: do a double
rotation and recolour
B
P
SX
A DC
C
SP
B
X
A
D
Case 2: One/Both of X’s children is red Recurse down to X’s child If we land on a red node, fine. If we land on a black node, rotate
sibling and parent:
B
P
SX
A CC
S
P
B
X
AD
D
Red-Black trees use color as balancing information instead of height in AVL trees.
An insertion may cause a local perturbation (two consecutive red nodes)
The pertubation is either resolved locally (rotations), or propagated to a higher level in the tree by recoloring
(color flip) O(1) for a rotation or color flip At most one restructuring per insertion. O(log n) color flips Total time: O(log n)
Summary
Thank you!