Beruflich Dokumente
Kultur Dokumente
( 9.3)
Binary Search Trees
Splay Trees
3
4
(35,R)
Splay Trees
(14,J)
(7,T)
(1,Q)
(1,C)
(5,H)
(5,G)
(6,Y)
(5,I)
Splay Trees
(10,A)
(7,T)
(1,Q)
(1,C)
(2,R)
(7,P)
(36,L)
(10,A)
(7,T)
(37,P)
(1,Q)
(40,X)
(1,C)
(10,U)
(6,Y)
(5,H)
Splay Trees
(14,J)
(21,O)
(7,P)
(36,L)
(37,P)
(40,X)
(10,U)
(5,G)
(5,I)
(35,R)
(8,N)
(2,R)
(5,G)
(5,I)
Splay Trees
(21,O)
(8,N)
(5,H)
(35,R)
(14,J)
(40,X)
(10,U)
(7,P)
(2,R)
(37,P)
(36,L)
(20,Z)
(21,O)
(8,N)
(10,A)
BST Rules:
(20,Z)
(6,Y)
Splaying:
p is xs parent;
start with
node x
right rotation
left rotation
is x the
root?
is x a left-left
grandchild?
stop
zig
- zig
right-rotate about g,
right-rotate about p
yes
yes
no
is x a child of
the root?
is x a right-right
grandchild?
no
zig
- zig
left-rotate about g,
left-rotate about p
yes
T3
T1
is x a right-left
grandchild?
T1
y
T2
T1
T3
T2
is x the left
child of the
root?
T3
yes
T2
T3
T1
zig
- zag
y
T1
T4
T1
T2
T3
T4
yes
Splay Trees
(20,Z)
(10,A)
(35,R)
g
(14,J)
(7,T)
p
(1,Q)
(8,N)
T2
(5,H)
(2,R)
T3
g
x
zig
(10,A)
(10,U)
(7,T)
T4
(5,G)
(6,Y)
T1
T2
Splay Trees
(20,Z)
(21,O)
(37,P)
(36,L)
(40,X)
(35,R)
(8,N)
(7,T)
(1,C)
(1,Q)
(7,P)
2.
(5,H)
T3
T4
(10,U)
(7,P)
(35,R)
(14,J)
(8,N)
(1,Q)
T2
T3
(before
rotating)
(40,X)
g
p
(36,L)
(10,A)
(21,O)
(37,P)
T1
1.
(37,P)
x
(1,C)
(5,I)
T2
(21,O)
(20,Z)
T3
zig
- zig
zig
- zag
right-rotate about p,
left-rotate about g
T1
left-rotate about
the root
let x = (8,N)
x is the right child of its parent,
which is the left child of the
grandparent
left-rotate around p, then rightrotate around g
T4
is x a left-right
grandchild?
zig
left-rotate about p,
right-rotate about g
yes
Splaying Example
Visualizing the
Splaying Cases
y
zig
right-rotate
about the root
T2
Splay Trees
no
zig
- zag
T1
T2
T3
T4
(2,R)
(6,Y)
(40,X)
3.
(after second
rotation)
(5,G)
(5,I)
Splay Trees
(36,L)
(14,J)
(10,U)
(5,H)
(2,R)
(5,G)
(5,I)
(1,C)
(7,P)
(6,Y)
Example Result
of Splaying
x
(7,T)
(1,Q)
(1,C)
(35,R)
(10,A)
(7,P)
(14,J)
(10,U)
(5,H)
(2,R)
(5,G)
(5,I)
(21,O)
(6,Y)
(37,P)
(36,L)
(8,N)
2.
(20,Z)
(7,T)
(before applying
rotation)
(1,Q)
(7,P)
(14,J)
(5,H)
(10,U)
(5,G)
(21,O)
(40,X)
(6,Y)
(10,U)
(5,G)
(40,X)
(6,Y)
(10,A)
(1,Q)
(35,R)
(37,P)
(14,J)
(7,T)
(37,P)
(8,N)
(1,C)
(5,H)
(7,P)
(2,R)
(35,R)
(8,N)
(21,O)
(36,L)
(10,U)
(1,C)
(36,L)
(5,H)
(2,R)
(5,G)
(5,I)
(21,O)
(7,P)
(5,G)
(5,I)
(6,Y)
(10,U)
(6,Y)
after second
splay
Splay Trees
10
method
find(k)
insert(k,v)
Splay Trees
(40,X)
(37,P)
(36,L)
Splay Trees
(37,P)
(36,L)
(7,P)
(40,X)
(14,J)
(7,T)
(35,R)
(10,A)
(21,O)
(8,N)
(20,Z)
(10,A)
(after rotation)
(1,Q)
(1,C)
(5,I)
(14,J)
(7,T)
(20,Z)
(40,X)
(2,R)
(35,R)
(5,I)
1.
(10,A)
before
(8,N)
(20,Z)
11
splay node
if key found, use that node
if key not found, use parent of ending external node
use the new node containing the entry inserted
use the parent of the internal node that was actually
removed from the tree (the parent of the node that the
removed item was swapped with)
Splay Trees
12
Amortized Analysis of
Splay Trees
Splay Trees
13
zig
- zig
T4
T1
T2
T2
T3
T4
T1
x
T2
T1
T1
T1
T2
T2
T3
T4
14
cost cost i
i =1
x
z
T4
T3
d /2
zig
- zag
y
Doing a zig
- zig or zig
- zag at x costs at most
3(rank(x)- rank(x))- 2.
Proof: See Proposition 9.2, Page 440.
z
T4
T1
T3
Cost of Splaying
y
x
zig
i =1
y
T2
T3
= 3( rank ( r ) rank 0 ( x )) 2( d / d ) + 2
T4
3( rank ( r ) rank ( x )) d + 2.
T3
Splay Trees
15
Splay Trees
16
Performance of
Splay Trees
Recall: rank of a node is logarithm of its size.
Thus, amortized cost of any splay operation is
O(log n).
In fact, the analysis goes through for any
reasonable definition of rank(x).
This implies that splay trees can actually
adapt to perform searches on frequentlyrequested items much faster than O(log n) in
some cases. (See Proposition 9.4 and 9.5.)
2004 Goodrich, Tamassia, Dickerson
Splay Trees
17