previous | start | next

Iterative version of put

Here is an iterative version of the public put method (no private method used):

The correctness is not quite as clear to demonstrate as for the recursive version.

  public void put(Key k, Value v)
  {
    if (root == null) {
       root = new Node(k,v);
       return;
    }
    Node p = root;
    while(true)
    {
      if (k.compareTo(p.key) < 0 ) {
        if ( p.left == null ) {
          p.left = new Node(k,v);
          return;
        }
        else
          p = p.left;
      }
      else if ( k.compareTo(p.key) > 0 ) {
        if ( p.right == null ) {
          p.right = new Node(k,v);
          return;
        }
        else
          p = p.right;
      }
      else { // k already in the tree, update its value
        p.val = v;
        return;
      }
    }
  }



previous | start | next