Data Structures, Algorithms, & Applications in C++
Chapter 14, Exercise 5


AbstractDataType dIndexedBSTree
{
   instances
      same as for indexedBSTree except that the keys need not be distinct
   operations
      find(k): return the pair with key k
      find(index): return the indexth pair
      insert(p): insert pair p into the search tree
      erase(k): delete the pair with key k and return it
      erase(index): delete the indexth pair
      ascend(): output all pairs in nondecreasing order of key
}