Sie sind auf Seite 1von 31

CS 16: Balanced Trees

2-3-4 Trees and RedBlack Trees

erm

204

CS 16: Balanced Trees

2-3-4 Trees Revealed


Nodes store 1, 2, or 3 keys and have
2, 3, or 4 children, respectively
All leaves have the same depth
k
nr

beh

cd

fg

lm

sx

1
--- log ( N + 1 ) height log ( N + 1 )
2

erm

205

CS 16: Balanced Trees

2-3-4 Tree Nodes


Introduction of nodes with more than 1 key,
and more than 2 children
a

2-node:
same as a binary node

<a

>a

a b

3-node:
<a

2 keys, 3 links

>b
>a
<b
a b c

4-node:
3 keys, 4 links
<a

>c
>a
<b

erm

206

>b
<c

CS 16: Balanced Trees

Why 2-3-4?
Why not minimize height by maximizing
children in a d-tree?
Let each node have d children so that we
get O(log d N) search time! Right?
logdN = log N/log d
That means if d = N1/2, we get a height of 2
However, searching out the correct child
on each level requires O(log N1/2) by
binary search
2 log N1/2 = O(log N) which is not as good
as we had hoped for!
2-3-4-trees will guarantee O(log N) height
using only 2, 3, or 4 children per node
erm

207

CS 16: Balanced Trees

Insertion into 2-3-4 Trees


Insert the new key at the lowest internal
node reached in the search
2-node becomes 3-node
g

dg

3-node becomes 4-node


f

d f g

dg

What about a 4-node?


We cant insert another key!

erm

208

CS 16: Balanced Trees

Top Down Insertion


In our way down the tree, whenever we
reach a 4-node, we break it up into two 2nodes, and move the middle element up
into the parent node
e
e
fn
n

dfg

Now we can perform the


insertion using one of the
previous two cases
Since we follow this
method from the root down
to the leaf, it is called
top down insertion

erm

209

fn

de

CS 16: Balanced Trees

Splitting the Tree


As we travel down the tree, if we encounter any
4-node we will break it up into 2-nodes. This
guarantees that we will never have the problem
of inserting the middle element of a former 4node into its parent 4-node.

c n t

fil
g

pr

n
c

a
erm

Whoa, cowboy

pr

fil
210

CS 16: Balanced Trees

n
c

pr

fil

n
c

t
Whoa, cowboy

erm

fil

pr

211

CS 16: Balanced Trees

n
c

t
Whoa, cowboy

pr

fil
n

ci

pr

l
n

ci

erm

fg

pr

212

CS 16: Balanced Trees

Time Complexity of Insertion


in 2-3-4 Trees
Time complexity:
A search visits O(log N) nodes
An insertion requires O(log N) node splits
Each node split takes constant time
Hence, operations Search and Insert each
take time O(log N)
Notes:
Instead of doing splits top-down, we can
perform them bottom-up starting at the insertion node, and only when needed. This
is called bottom-up insertion.
A deletion can be performed by fusing
nodes (inverse of splitting), and takes
O(log N) time

erm

213

CS 16: Balanced Trees

Beyond 2-3-4 Trees


What do we know about 2-3-4 Trees?
Balanced

Siskel

O(log N) search time

Different node structures

Ebert

Roberto

Can we get 2-3-4 tree advantages in a binary


tree format???
Welcome to the world of Red-Black Trees!!!

erm

214

CS 16: Balanced Trees

Red-Black Tree
A red-black tree is a binary search tree with the
following properties:
edges are colored red or black
no two consecutive red edges
on any root-leaf path
same number of black edges
on any root-leaf path
(= black height of the tree)
edges connecting leaves are black

Black
Edge

erm

Red
Edge

215

CS 16: Balanced Trees

2-3-4 Tree Evolution


Note how 2-3-4 trees relate to red-black trees
2-3-4

Red-Black

or

Now we see red-black trees are just a way of


representing 2-3-4 trees!
erm

216

CS 16: Balanced Trees

More Red-Black Tree


Properties
N
L
H
B

# of internal nodes
# leaves (= N + 1)
height
black height

Property 1: 2B N + 1 4B

Property 2:

1
--- log ( N + 1 ) B log ( N + 1 )
2

Property 3:

log ( N + 1 ) H 2 log ( N + 1 )

This implies that searches take time O(logN)!


erm

217

CS 16: Balanced Trees

Insertion into Red-Black Trees


1.Perform a standard search to find the leaf
where the key should be added
2.Replace the leaf with an internal node with
the new key
3.Color the incoming edge of the new node
red
4.Add two new leaves, and color their
incoming edges black
5.If the parent had an incoming red edge, we
now have two consecutive red edges! We
must reorganize tree to remove that
violation. What must be done depends on
the sibling of the parent.

R
G

erm

218

CS 16: Balanced Trees

Insertion - Plain and Simple


Let:
n be the new node
p be its parent
g be its grandparent

Case 1: Incoming edge of p is black


No violation

g
p

STOP!

n
Pretty easy, huh?
Well... it gets messier...

erm

219

CS 16: Balanced Trees

Restructuring
Case 2: Incoming edge of p is red, and
its sibling is black
Uh oh!

g
Much
Better!

p
n
n

We call this a right rotation

erm

No further work on tree is necessary


Inorder remains unchanged
Tree becomes more balanced
No two consecutive red edges!
220

CS 16: Balanced Trees

More Rotations
Similar to a right rotation, we can do a
left rotation...

g
p
p
g
n

Simple, huh?

erm

221

CS 16: Balanced Trees

Double Rotations
What if the new node is between its parent and
grandparent in the inorder sequence?
We must perform a double rotation
(which is no more difficult than a single one)

n
p

p
n

This would be called a


left-right double rotation

erm

222

CS 16: Balanced Trees

Last of the Rotations


And this would be called a
right-left double rotation

n
g

p
n

erm

223

CS 16: Balanced Trees

Bottom-Up Rebalancing
Case 3: Incoming edge of p is red and its
sibling is also red

We call this a promotion


Note how the black depth remains unchanged for all of the descendants of g
This process will continue upward beyond
g if necessary: rename g as n and repeat.
erm

224

CS 16: Balanced Trees

Summary of Insertion

If two red edges are present, we do either


a restructuring (with a simple or double
rotation) and stop, or
a promotion and continue
A restructuring takes constant time and is
performed at most once. It reorganizes an
off-balanced section of the tree.
Promotions may continue up the tree and
are executed O(log N) times.
The time complexity of an insertion is
O(logN).

erm

225

CS 16: Balanced Trees

An Example
Start by inserting REDSOX into an empty tree

E
D

R
O

S
X

Now, lets insert C U B S...

erm

226

CS 16: Balanced Trees

A Cool Example
C

E
D

R
S

E
D
C

R
O

S
X

erm

227

CS 16: Balanced Trees

An Unbelievable Example
E

U
D

R
S

E
D

R
O

S
X

Oh No!
What should we do?
erm

U
228

CS 16: Balanced Trees

E
D

R
S

Double Rotation
U
E
D

R
U

O
S

erm

229

CS 16: Balanced Trees

A Beautiful Example
E

B
D

R
U

E
R

D
What
now?

B
erm

230

CS 16: Balanced Trees

E
R

Rotation

E
R

C
B

D O
S

erm

231

CS 16: Balanced Trees

A Super Example
E

D O

E
R

C
B

D O

Holy Consecutive
Red Edges, Batman!

X
S

erm

232

We couldve
placed it on
either side

CS 16: Balanced Trees

E
R

D O

B
Use the
Bat-Promoter!!

S
S

BIFF!

C
B

D O
S

X
S

erm

233

CS 16: Balanced Trees

Rotation

D O

X
S

R
The SUN lab
and Red-Bat
trees are safe...
...for now!!!

O S

C
B
erm

S
234

Das könnte Ihnen auch gefallen