public Object  replaceElement(Position v, Object o) {
    Object temp = ((BTNode) v).element();
    ((BTNode) v).setElement(o);
    return temp;
  }
  public void swapElements(Position v, Position w) {
    Object temp = w.element();
    ((BTNode) w).setElement(v.element());
    ((BTNode) v).setElement(temp);	
  }
  public void expandExternal(Position v) {
    if (isExternal(v)) {
      ((BTNode) v).setLeft(new BTNode(null,(BTNode) v, null, null));
      ((BTNode) v).setRight(new BTNode(null,(BTNode) v, null, null));
      size += 2;
    }
  }
  public void removeAboveExternal(Position v) {
    if (isExternal(v)) {
      BTNode p = (BTNode) parent(v);
      BTNode s = (BTNode) sibling(v);
      if (isRoot(p)) {
        s.setParent(null);
        root = s;
      }
      else {
        BTNode g = (BTNode) parent(p);
        if (p == leftChild(g))
          g.setLeft(s);
        else
          g.setRight(s);
        s.setParent(g);
      }
      size -= 2;
    }
  }