BALANCED SEARCH TREES
2-3 trees. Understand how to search and insert.
Understand why insertion technique leads to perfect balance and symmetric order.
Terminology. Symmetric order. Perfect balance.
Performance of 2-3 trees. Tree height is between log_3 N and log_2 N. All paths are of the same height.
1-1 correspondence between LLRBs and 2-3 trees. Understand how to map a 2-3 tree to an LLRB and vice versa.
LLRBs. BST such that no node has two red links touching it; perfect black balance; red links lean left.
LLRB get. Exactly the same as regular BST get.
Storing color. A node's color is the same as the edge connecting that node to its parent.
LLRB insert. Insert as usual, then apply rotations recursively as follows, working upwards from the new node.
Conveniently, we can always apply case 3, case 2, then case 1 to every node in a tree,
and we can guarantee that the entire tree will be an LLRB.
- Case 3: A parent node has a black left child and a red right child, so rotate the parent left.
The former right child is now the boss. Reminder: null links are considered black for the purposes of deciding cases.
- Case 2: A grandparent node has a red left child whose left child is also red.
Rotate this grandparent right (so that one in the middle is now the boss).
- Case 1: A parent node has two red children. Flip colors.
LLRB performance. Perfect black balance ensures worst case performance for get and insert is ~ 2 log_2 N.
- Given an LLRB, is there exactly one corresponding 2-3 tree? Given a 2-3 tree, is the exactly one corresponding LLRB?
- Draw a 2-3 tree with all 3 nodes. Why is the height log3(N)?
- How many compares does it take in the worst case to decide whether to take the left, middle, or right link from a 3 node?
- Fall 2010 Midterm, #4. Fall 2011 Midterm, #6. Spring 2012 Midterm, #5. Spring 2013 Midterm, #2. Fall 2008 Midterm, #6. Fall 2009 Midterm, #4.
- For a 2-3 tree of height h, what is the best case number of compares to find a key? The worst case?
- Show that in the worst case, we need to perform order log N LLRB operations
(rotation and color flipping) after an insert (not as hard as it might seem).
Give an example of a tree which requires log N LLRB operations after a single insert (also not so hard).