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.