BST Study Guide
Author: Josh Hug

## Example Implementations

BST (also supports ordered operations)

### C level

1. What is the best case BST height in terms of N? Worst case?
2. If shuffling yields $\log N$ tree height (with extremely high probability), why don't we simply shuffle our input data before building our BST based symbol table to avoid worst case behavior?
3. [Adapted from Textbook 3.2.3] Give two orderings of the keys A X C S E R H that, when inserted into an empty BST, yield the best case height. Draw the tree.
4. Delete the root from the tree you created for question C-3.

### B level

1. [Adapted from Textbook 3.2.4] Suppose that a certain BST has keys that are integers between 1 and 10, and we search for 5. Which sequence(s) of keys below are possible during the search for 5?

a. 10, 9, 8, 7, 6, 5
b. 4, 10, 8, 7, 53
c. 1, 10, 2, 9, 3, 8, 4, 7, 6, 5
d. 2, 7, 3, 8, 4, 5
e. 1, 2, 10, 4, 8, 5
2. Give an example of something that you might like to store as a key in a symbol table for which there is no natural compare method.
3. Do there exist any objects for which it is impossible to define a total order? In other words, can we always write a compare method if we're willing to do the work, or are some data types fundamentally impossible to compare other than for equality?
4. When we delete from a BST, we always chose either the predecessor or successor as a replacement for the root. We said that these two items always have zero or one children. Why?
5. Is the delete operation commutative? In other words, if we delete x, then y, do we always get the same tree as if we delete y, then x?
6. Problem 1 from the Fall 2014 midterm.

### A+ level

1. Problem 3 from the Fall 2009 midterm. This problem is magnificent in its elegance and difficulty.