❖ Splay Trees |
Splay tree = one style of "self-balancing" tree ...
Splay tree insertion modifies insertion-at-root method:
Splay tree implementations also do rotation-in-search:
❖ ... Splay Trees |
Cases for splay tree double-rotations:
❖ ... Splay Trees |
Actions for splay tree double-rotations:
❖ Splay Tree Insertion Algorithm |
In describing splay trees, it is convenient to use abbreviations
tl = tr->left = left(tree) tr = tree->right = right(tree) tll = tree->left->left tlr = tree->left->right trr = tree->right->right trl = tree->right->left
These could be implemented using #define
#define tll t->left->left
❖ ... Splay Tree Insertion Algorithm |
Algorithm for splay tree insertion:
insertSplay(tree,item): | Input tree, item | Output tree with item splay-inserted | | if tree is empty then return new node containing item | else if item=data(tree) then return tree | else if item < data(tree) then | | if left(tree) is empty then | | left(tree) = new node containing item | | else if item < data(left(tree)) then | | // Case 1: left-child of left-child | | tll = insertSplay(tll),item) | | tree = rotateRight(tree) | | else // Case 2: right-child of left-child | | tlr = insertSplay(tlr,item) | | left(tree) = rotateLeft(left(tree)) | | end if | | return rotateRight(tree) | else if item > data(tree) then | | if right(tree) is empty then | | right(tree) = new node containing item | | else if item < data(right(tree)) then | | // Case 3: left-child of right-child | | trl = insertSplay(trl,item) | | right(tree) = rotateRight(right(tree)) | | else // Case 4: right-child of right-child | | trr = insertSplay(trr,item) | | tree = rotateLeft(tree) | | end if | | return rotateLeft(tree) | end if
❖ Searching in Splay Trees |
Searching in splay trees:
searchSplay(tree,item): | Input tree, item | Output address of item if found in tree | NULL otherwise | | if tree=NULL then | return NULL | else | | tree = splay(tree,item) | | if data(tree)=item then | | return tree | | else | | return NULL | | end if | end if
splay()
insertSplay()
moves item
❖ ... Searching in Splay Trees |
Example: search for 22
How does this affect the tree?
❖ Splay Tree Performance |
Analysis of splay tree performance:
❖ ... Splay Tree Performance |
Implications of performance analysis
i.e. gives good overall (amortized) cost.
Produced: 15 Jun 2020