Download presentation
Presentation is loading. Please wait.
Published byErick Carroll Modified over 9 years ago
1
CSC 213 – Large Scale Programming
2
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?
3
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
4
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
5
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
6
Building a SplayTree builds upon BST Another approach which builds upon BST Not an AVLTree Not an AVLTree, however, but a new BST subclass
7
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
8
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
9
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
10
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 Splay tree with each find, insert & remove AVL-like restructuring to reorganize nodes in tree But continues rotations until node becomes root
11
How To Splay
12
Uses trinode restructuring but not like AVL does nodeparentgrandparent 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
13
When To Use Splay Tree What applications are good for a splay tree? Where would splay trees be a BAD IDEA ?
14
Splay Node Rotations Uses different nodes Uses different nodes than previous rotations AVLTree moves node down to balance tree's tao Can now be greedy: make it SplayTree 's root
15
Splay Node Rotations Uses different nodes 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
16
Splay Node Rotations Uses different nodes Uses different nodes than previous rotations AVLTree moves node down to balance tree's tao Can now be greedy: make it SplayTree 's root AVLTreeSplayTree
17
Zig-Zag 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 T2T2 T3T3 T4T4 grandparent T1T1 parent node T2T2 T3T3 T4T4 grandparent T1T1
18
Zig-Zig Zig-Zig When Splaying a Tree parent node grandparent T1T1 T4T4 T2T2 T3T3
19
Zig-Zig Zig-Zig When Splaying a Tree parent node grandparent T1T1 T4T4 T2T2 T3T3 parent node T2T2 T3T3 T4T4 grandparent T1T1
20
Right Splaying Right Child Of Root root node T3T3 T1T1 T2T2 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
21
Right Splaying Right Child Of Root root node T3T3 T1T1 T2T2 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
22
Right Splaying Right Child Of Root root node root node T2T2 T3T3 T1T1 T3T3 T1T1 T2T2 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
23
Left 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 T2T2 T3T3 T1T1 root node T3T3 T1T1 T2T2 root
24
Which Node Gets Splayed? MethodNode to splay find If found, splay node containing match If not found, splay last node in treeSearch add Splay node for new Entry remove If found, splay parent of external node removed If not found, splay last node in treeSearch
25
Which Node Gets Splayed? Only internal nodes Only internal nodes can be splayed When operation end with leaf, splay its parent MethodNode to splay find If found, splay node containing match If not found, splay last node in treeSearch add Splay node for new Entry remove If found, splay parent of external node removed If not found, splay last node in treeSearch
26
For Next Lecture
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.