CSC 213 – Large Scale Programming. Implementing Map with a Tree Accessing root much faster than...
-
Upload
erick-carroll -
Category
Documents
-
view
219 -
download
0
Transcript of CSC 213 – Large Scale Programming. Implementing Map with a Tree Accessing root much faster than...
Implementing Map with a Tree Accessing root much faster than going to leaves In real-world, should place important data
near root Which key best at root of Tree of NHL teams?
Implementing Map with a Tree Accessing root much faster than going to leaves In real-world, should place important data
near root Which key best at root of Tree of NHL teams? BST: Key for Entry added first
Implementing Map with a Tree Accessing root much faster than going to leaves In real-world, should place important data
near root Which key best at root of Tree of NHL teams? BST: Key for Entry added first
AVLTree: Random Entry near midpoint
Implementing Map with a Tree Accessing root much faster than going to leaves In real-world, should place important data
near root Which key best at root of Tree of NHL teams? BST: Key for Entry added first
AVLTree: Random Entry near midpoint
SplayTree: Most recently used key
Building a SplayTree
Another approach which builds upon BST Not an AVLTree, however, but a new BST
subclass
Concept Behind SplayTree
Splay trees do NOT maintain balance Recently used nodes clustered near top of BST
Most recently accessed nodes take O(1) time
Other nodes may need O(n) time to find, however
Concept Behind SplayTree
Splay trees do NOT maintain balance Recently used nodes clustered near top of BST
Most recently accessed nodes take O(1) time
Other nodes may need O(n) time to find, however
SplayTree Complexity
Without balancing, keeps BST's O(n) complexity Worst-case performance is like all
unbalanced trees But splaying gives expected O(log n)
complexity Averages complexity of O(1) & O(n)
operations If work concentrated on small subset, time
is faster Worst-case hard to create without knowing
tree
Be Kind: Splay Your Tree
Assumes nodes reused soon after initial use At end of each method, moves node up to
root Using node now O(1) and will only slowly
drop in tree Splay tree with each find, insert & remove AVL-like restructuring to reorganize nodes
in tree But continues rotations until node becomes
root
How To Splay
Uses trinode restructuring but not like AVL does Not balancing: selects node, parent, &
grandparent Always move node to root of subtree when
splaying When splaying, new types restructures
also exist Node & parent always used in these
rotations Rotations will also use grandparent, if it
exists Moving node to tree root is goal of
splaying May get a balanced tree, but WANT IT
ALL, ASAP
When To Use Splay Tree
What applications are good for a splay tree?
Where would splay trees be a BAD IDEA?
Splay Node Rotations
Uses different nodes than previous rotations AVLTree moves node down to balance
tree's tao Can now be greedy: make it SplayTree's
root
Splay Node Rotations
Uses different nodes than previous rotations AVLTree moves node down to balance
tree's tao Can now be greedy: make it SplayTree's
root
AVLTree
Splay Node Rotations
Uses different nodes than previous rotations AVLTree moves node down to balance
tree's tao Can now be greedy: make it SplayTree's
root
AVLTree SplayTree
Zig-Zag When Splaying a Tree When node median of parent &
grandparent Just like in AVL tree, perform trinode
restructuring Use 7(+1) variables to set node's parent &
children
parent
node
T2 T3
T4
grandparent
T1
parent
node
T2 T3 T4
grandparent
T1
Zig-Zig When Splaying a Tree When node, parent, & grandparent in a
line Rotation differs from AVL tree's trinode
restructure
parent
node
grandparent
T1
T4
T2
T3
Zig-Zig When Splaying a Tree When node, parent, & grandparent in a
line Rotation differs from AVL tree's trinode
restructure Greed is very good: splay node to subtree
root
parent
node
grandparent
T1
T4
T2
T3
parent
node
T2
T3
T4grandparent
T1
Splaying Right Child Of Root
root
node
T3
T1
T2
Simplest process is when parent is the root Single rotation completes splaying process
Splaying does not stop until you reach the top Rotation not always used, may only need
restructures
Splaying Right Child Of Root
root
node
T3
T1
T2
Simplest process is when parent is the root Single rotation completes splaying process
Splaying does not stop until you reach the top Rotation not always used, may only need
restructures
Splaying Right Child Of Root
root
node root
node
T2
T3
T1T3
T1
T2
Simplest process is when parent is the root Single rotation completes splaying process
Splaying does not stop until you reach the top Rotation not always used, may only need
restructures
Splaying Left Child Of Root
Simplest process is when parent is the root Single rotation completes splaying process
Splaying does not stop until you reach the top Rotation not always used, may only need
restructures
T2
T3
T1
root
node
T3
T1
T2
node
root
Which Node Gets Splayed?
Method
Node to splay
findIf found, splay node containing matchIf not found, splay last node in treeSearch
add Splay node for new Entry
remove
If found, splay parent of external node removedIf not found, splay last node in treeSearch
Which Node Gets Splayed?
Only internal nodes can be splayed When operation end with leaf, splay its
parent
Method
Node to splay
findIf found, splay node containing matchIf not found, splay last node in treeSearch
add Splay node for new Entry
remove
If found, splay parent of external node removedIf not found, splay last node in treeSearch
For Next Lecture
Weekly assignment available to test skills Assignment due at regular time next
Tuesday Lab project phase #2 due tomorrow as
well When group ready to submit, send me e-
Midterm #1 in class on Friday Open-book, open-note exam (as usual) Use any lecture’s slides IF you have notes
on them No computers, calculators, or friends,
however