Example Implementations
BST (also supports ordered operations)
Recommended Problems
C level

What is the best case BST height in terms of N? Worst case?

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?

[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. 
Delete the root from the tree you created for question C3.
B level

[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

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.

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?

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?

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?

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