In this homework, you should augment the BSTOrderedMap class from
here by providing an implementation
of the *remove*, *firstEntry*, *lastEntry*,
* ceilingEntry*, and *higherEntry* methods, which are currently just stubs. Note that the BSTOrderedMap
class is the one we developed in the lectures for implementing the
Ordered Map ADT using a Binary Search Tree.

The Map ADT is defined in Section 9.1, and the Ordered Map ADT in Section 9.3.

The implementations of the new methods should run in O(h) time, where h is the height of the tree. Feel free to modify things in the BSTOrderedMap class, well as the classes nested in it, as needed. (But preserve the basic structure of the class -- a binary search tree implementation using BTNode objects to hold the nodes.)

Section 10.1 is a general reference for binary search trees. The current
implementations of *put* and *get* follow the ideas developed
there.

Feel free to define and throw Exceptions as appropriate. The current implementation is a bit deficient in this regard. For example, the first thing that the get method should probably do is check if the given key is null.

Submit the source files into a dropbox in ICON called Homework10. This assignment is due by 11:59 pm on Wednesday, Dec 5.