0% found this document useful (0 votes)
31 views32 pages

Lec 44

Splay trees are binary search trees that provide amortized O(log n) time for operations like search, insert, delete by performing a splay operation after each operation. The splay operation moves the accessed node to the root by a series of rotations, balancing the tree. There are bottom-up and top-down varieties, with top-down being faster as it performs rotations during descent for further balancing.

Uploaded by

무나
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views32 pages

Lec 44

Splay trees are binary search trees that provide amortized O(log n) time for operations like search, insert, delete by performing a splay operation after each operation. The splay operation moves the accessed node to the root by a series of rotations, balancing the tree. There are bottom-up and top-down varieties, with top-down being faster as it performs rotations during descent for further balancing.

Uploaded by

무나
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 32

Splay Trees

• Binary search trees.


• Search, insert, delete, and split have amortized
complexity O(log n) & actual complexity O(n).
• Actual and amortized complexity of join is O(1).
• Priority queue and double-ended priority queue
versions outperform heaps, deaps, etc. over a
sequence of operations.
• Two varieties.
 Bottom up.
 Top down.
Bottom-Up Splay Trees
• Search, insert, delete, and join are done as in an
unbalanced binary search tree.
• Search, insert, and delete are followed by a
splay operation that begins at a splay node.
• When the splay operation completes, the splay
node has become the tree root.
• Join requires no splay (or, a null splay is done).
• For the split operation, the splay is done in the
middle (rather than end) of the operation.
Splay Node – search(k)
20

10 40

6 15 30

2 8 25

• If there is a pair whose key is k, the node


containing this pair is the splay node.
• Otherwise, the parent of the external node where
the search terminates is the splay node.
Splay Node – insert(newPair)
20

10 40

6 15 30

2 8 25

• If there is already a pair whose key is


newPair.key, the node containing this pair is the
splay node.
• Otherwise, the newly inserted node is the splay
node.
Splay Node – delete(k)
20

10 40

6 15 30

2 8 25

• If there is a pair whose key is k, the parent of the


node that is physically deleted from the tree is the
splay node.
• Otherwise, the parent of the external node where
the search terminates is the splay node.
Splay Node – split(k)
• Use the unbalanced binary search tree insert
algorithm to insert a new pair whose key is k.
• The splay node is as for the splay tree insert
algorithm.
• Following the splay, the left subtree of the root is
S, and the right subtree is B.
m

S B
• m is set to null if it is the newly inserted pair.
Splay

• Let q be the splay node.


• q is moved up the tree using a series of splay
steps.
• In a splay step, the node q moves up the tree by
0, 1, or 2 levels.
• Every splay step, except possibly the last one,
moves q two levels up.
Splay Step
• If q = null or q is the root, do nothing (splay
is over).
• If q is at level 2, do a one-level move and
terminate the splay operation.
q
p
a p
q c

a b b c

• q right child of p is symmetric.


Splay Step
• If q is at a level > 2, do a two-level move
and continue the splay operation.
q
gp
a p
p d
b gp
q c

a b c d
• q right child of right child of gp is symmetric.
2-Level Move (case 2)
q
gp
p gp
p d
a b c d
a q

b c

• q left child of right child of gp is symmetric.


Per Operation Actual Complexity

• Start with an empty splay tree and insert


pairs with keys 1, 2, 3, …, in this order.

1 1 2

2 1
Per Operation Actual Complexity

• Start with an empty splay tree and insert


pairs with keys 1, 2, 3, …, in this order.

3 3
2
2 2 4
1 3
1 1
Per Operation Actual Complexity

• Worst-case height = n.
• Actual complexity of search, insert, delete,
and split is O(n).
Top-Down Splay Trees
• On the way down the tree, split the tree into
the binary search trees S (small elements)
and B (big elements).
 Similar to split operation in an unbalanced binary
search tree.
 However, a rotation is done whenever an LL or RR
move is made.
 Move down 2 levels at a time, except (possibly) in the
end when a one level move is made.
• When the splay node is reached, S, B, and the
subtree rooted at the splay node are combined into
a single binary search tree.
Split A Binary Search Tree
A S B

a B
C b

c D
d E
m e

f g
Split A Binary Search Tree
S B

B A
C b
a
c D
d E
m e

f g
Split A Binary Search Tree
S B

A B
C a b
c D
d E
m e

f g
Split A Binary Search Tree
S B

A B
a C b
D
c
d E
m e

f g
Split A Binary Search Tree
S B

A B
a C b

c D
E
d
m e

f g
Split A Binary Search Tree
S B

A B
a C E b
e
c D
d
m
f g
Split A Binary Search Tree
S B

A B
a C E b
g e
c D
d f
m
Two-Level Moves
A • Let m be the splay node.
a B • RL move from A to C.
C b • RR move from C to E.
• L move from E to m.
c D
d E
m e

f g
RL Move
A S B

a B
C b

c D
d E
m e

f g
RL Move
S B

A B
C a b
c D
d E
m e

f g
RR Move
S B

A B
C a b
c D
d E
m e

f g
RR Move
S B

A B
a D b
C
E c d
m e

f g
L Move
S B

A B
a D b
C
E c d
m e

f g
L Move
S B

A B
a D E b
C e
c d
m
f g
Wrap Up
m S B

f g A B
a D E b
C e
c d
Wrap Up
m S B

A B
a D E b
C f g e
c d
Wrap Up
m

A B
a D E b
C f g e
c d
Bottom Up vs Top Down

• Top down splay trees are faster than bottom


up splay trees.

You might also like