This is what I have so far: (any help is appreciated )

Code:
// Dictionary.java
// Binary Search Tree implementation of the Dictionary ADT

public class Dictionary implements DictionaryInterface {
  
  // private inner Node class
  private class Node {
      int key;
      int value;
      Node left;
      Node right;

      Node(int k, int v){
         key = k;
         value = v;
         left = null;
         right = null;
      }
   }

  // Fields for the IntegerList class
   private Node root;     // reference to root Node in List
   private int numItems;  // number of items in this IntegerList

   // Dictionary()
   // constructor for the Dictionary class
   public Dictionary(){
      root = null;
      numItems = 0;
   }

    // findKey
    // returns a reference to the Node containing key k in the subtree rooted at R,
    // or NULL if no such Node exists

   private Node findKey(int index){
     Node N = root;
     if(index < N.key ) return findKey(index-1);
     else return findKey(index+1);
   }

   // isEmpty()
   // pre: none
   // post: returns true if this Dictionary is empty, false otherwise
   public boolean isEmpty(){
     return (numItems == 0);
   }

   // size()
   // pre: none
   // post: returns the number of entries in this Dictionary
   public int size(){
     return numItems;
   }

   // lookup()
   // pre: none
   // post: returns value associated key k, or UNDEF if no such key exists
   public int lookup(int k){
     
     return 0;
   }

   // insert()
   // inserts new (key,value) pair into this Dictionary
   // pre: key k does not exist in this Dictionary, i.e. lookup(k)==UNDEF
   // post: !isEmpty(), size() is increased by one
   public void insert(int k, int v) throws KeyCollisionException{
     
   }

   // delete
   // deletes the pair with the key k
   // pre: key k currently exists in this Dictionary, i.e. lookup(k)!=UNDEF
   // post: size() is decreased by one
   public void delete(int k) throws KeyNotFoundException{
     
   }

   // makeEmpty()
   // pre: none
   // post: isEmpty()
   public void makeEmpty(){
     root = 0;
     numPairs = 0;
   }

   // toString()
   // overrides Object's toString() method
   // pre: none
   // post: returns a String representation of this Dictionary ordered
   // by ascending keys
   public String toString(){
     String s = "";
     for(Node N=root; N!=null; N=N.left){
       s += N.key + ", " + N.value + " ";
     }
     return s;
   }
}