Professional Documents
Culture Documents
Balanced Trees: 2-3-4 Trees Red-Black Trees B-Trees
Balanced Trees: 2-3-4 Trees Red-Black Trees B-Trees
2-3-4 trees
red-black trees
B-trees
References:
Algorithms in Java, Chapter 13
http://www.cs.princeton.edu/introalgsds/44balanced
1
Randomized BST.
Guarantee of ~c lg N time per operation (probabilistic).
Need subtree count in each node.
Need random numbers for each insert/delete op.
guarantee
average case
search
insert
delete
search
insert
delete
ordered
iteration?
unordered array
N/2
N/2
N/2
no
ordered array
lg N
lg N
N/2
N/2
yes
unordered list
N/2
N/2
no
ordered list
N/2
N/2
N/2
yes
BST
1.39 lg N
1.39 lg N
yes
randomized BST
7 lg N
7 lg N
7 lg N
1.39 lg N
1.39 lg N
1.39 lg N
yes
implementation
N = 250
lg N 8
1.39 lg N 11
average node depth
2-3-4 trees
red-black trees
B-trees
2-3-4 Tree
2-3-4 tree. Generalize node to allow multiple keys; keep tree balanced.
Perfect balance. Every path from root to leaf has same length.
Allow 1, 2, or 3 keys per node.
2-node: one key, two children.
3-node: two keys, three children.
4-node: three keys, four children.
K R
smaller than K
C E
F G J
larger than R
between
K and R
M O
S V
Y Z
6
K R
C E
between
K and R
smaller than M
F G J
M O
S V
Y Z
found L
7
Ex. Insert B
K R
smaller than K
M O
C E
smaller than C
B not found
F G J
S V
Y Z
Ex. Insert B
K R
smaller than K
A B
M O
C E
smaller than C
B fits here
F G J
S V
Y Z
Insert.
Search to bottom for key.
Ex. Insert X
K R
larger than R
M O
C E
F G J
S V
larger than W
Y Z
X not found
10
Ex. Insert X
K R
M O
C E
A B
F G J
S V
X Y Z
X fits here
11
Ex. Insert H
K R
smaller than K
C E
larger than E
F G J
H not found
M O
S V
Y Z
12
Ex. Insert H
K R
M O
C E
A B
F G J
S V
X Y Z
13
C E
A B
F G J
move middle
key to parent
split remainder
into two 2-nodes
A B
J
H does fit here!
C E G
A B
H J
14
local transformations
that work anywhere
in the tree
15
DQ
KQW
K
A-C
A-C
E-J
L-P
could be huge
R-V
X-Z
E-J
L-P
R-V
X-Z
unchanged
16
DH
DHQ
KQW
A-C
E-G
A-C
I-J
could be huge
L-P
R-V
X-Z
E-G
I-J
L-P
R-V
X-Z
unchanged
17
insert C
insert A
A C
insert S
insert H
A S
R S
A C H
insert E
R S
A E S
insert R
split 4-node to
E
E
A
tree grows
up one level
insert I
R S
A C H
E
I R S
18
E
A C H
E R
I
I R S
E R
A C H
I N
S
split 4-node to
E C R
split 4-node to
I N
G H
E C R
A
C
E
G H
R
I N
S X
tree grows
up one level
19
Tree height.
Worst case: lg N
Best case:
log4 N = 1/2 lg N
[all 2-nodes]
[all 4-nodes]
20
Bottom line: could do it, but stay tuned for an easier way.
21
guarantee
average case
search
insert
delete
search
insert
delete
ordered
iteration?
unordered array
N/2
N/2
N/2
no
ordered array
lg N
lg N
N/2
N/2
yes
unordered list
N/2
N/2
no
ordered list
N/2
N/2
N/2
yes
BST
1.38 lg N
1.38 lg N
yes
randomized BST
7 lg N
7 lg N
7 lg N
1.38 lg N
1.38 lg N
1.38 lg N
yes
2-3-4 tree
c lg N
c lg N
c lg N
c lg N
implementation
yes
22
2-3-4 trees
red-black trees
B-trees
23
internal glue
Key Properties
elementary BST search works
1-1 correspondence between 2-3-4 and left-leaning red-black trees
C E
C
A B
F G J
B
A
J
D
G
F
24
Disallowed:
25
E
C
B
J
D
G
F
}
27
[stay tuned]
[stay tuned]
[stay tuned]
28
or
OK
or
OK
or
rotate
left
rotate
left
29
left rotate
(if necessary)
to make red link
lean left
d
d
c
b
e
Q
W
E-J
also make
this black
A-C
A-C
L-P
could be huge
R-V
X-Z
E-J
unchanged
L-P
R-V
X-Z
30
b
a
b
e
could be huge
A-C
L-P
I-J
Q
E-G
also make
this black
A-C
left rotate
(if necessary)
to make red link
lean left
R-V
X-Z
E-G
I-J
unchanged
L-P
R-V
X-Z
31
right
rotate
b
d
d
c
right
rotate
b
e
d
c
also make
this black
d
c
e
c
left
rotate
(if necessary)
b
a
also make
this black
left
rotate
(if necessary)
d
b
e
c
32
or
or
Split a 4-node
right
rotate
fix
color
left
rotate
34
Insert implementation for left-leaning red-black trees (code for basic operations)
Insert a new node at bottom
if (h == null)
return new Node(key, value, RED);
or
Split a 4-node
private Node splitFourNode(Node h)
{
x = rotR(h);
x.left.color = BLACK;
return x;
}
could be
left or right
x
right
rotate
middle node
is red
fix color of
left node
could be
red or black
left
rotate
35
if (isRed(h.left))
if (isRed(h.left.left))
h = splitFourNode(h);
search
if (isRed(h.right))
h = leanLeft(h);
return h;
}
36
straightforward
(if youve paid attention)
extremely tricky
38
new
old
39
guarantee
average case
search
insert
delete
search
insert
delete
ordered
iteration?
unordered array
N/2
N/2
N/2
no
ordered array
lg N
lg N
N/2
N/2
yes
unordered list
N/2
N/2
no
ordered list
N/2
N/2
N/2
yes
BST
1.38 lg N
1.38 lg N
yes
randomized BST
7 lg N
7 lg N
7 lg N
1.38 lg N
1.38 lg N
1.38 lg N
yes
2-3-4 tree
c lg N
c lg N
c lg N
c lg N
red-black tree
3 lg N
3 lg N
lg N
lg N
implementation
3 lg N
yes
lg N
yes
41
2-3-4 trees
red-black trees
B-trees
42
Space-time tradeoff.
M large only a few levels in tree.
M small less wasted space.
Typical M = 1000, N < 1 trillion.
43
B-Tree Example
no room
for 275
no room
for 737
M=5
44
no room
for 526
45
implementation
guarantee
average case
ordered
iteration?
search
insert
delete
search
insert
delete
unordered array
N/2
N/2
N/2
no
ordered array
lg N
lg N
N/2
N/2
yes
unordered list
N/2
N/2
no
ordered list
N/2
N/2
N/2
yes
BST
1.44 lg N
1.44 lg N
yes
randomized BST
7 lg N
7 lg N
7 lg N
1.44 lg N
1.44 lg N
1.44 lg N
yes
2-3-4 tree
c lg N
c lg N
c lg N
c lg N
red-black tree
2 lg N
2 lg N
2 lg N
lg N
lg N
lg N
yes
B-tree
yes
yes
47
48
!!
red-black tree
49
!!
red-black tree
50