public void remove(String str)
  {
    Node current = this.HEAD;
    Node[] update = new Node[MAX_LEVEL + 1];

    for (int i = this.level; i >= 0; i--)
      {
        // System.out.println("i = " + i);
        while (current.pointer[i] != null
               && str.compareTo(current.pointer[i].val) > 0)
          {
            current = current.pointer[i];
          }// while
        update[i] = current;
      } // for
    current = current.pointer[0];
    if (str.equals(current.val))
      {
        for (int i = 0; i < this.level; i++)
          {
            if (update[i].pointer[i] != current)
              break;
            update[i].pointer[i] = current.pointer[i];
            while (this.level > 0 && this.HEAD.pointer[this.level] == null)
              this.level--;
          }// for
      }// if
  }// remove(String str)