package treemethods;

public class BinaryTree {

  protected Object data;
  protected BinaryTree left,right;

  BinaryTree(){
    data = null;
    left = right = null;
  }

  BinaryTree(Object item){
    data = item;
    left = new BinaryTree();
    right = new BinaryTree();
  }

  BinaryTree(Object item, BinaryTree left, BinaryTree right)
  {
    data = item;
    this.left = left;
    this.right = right;
  }

  public Object getData(){
    return data;
  }

  public BinaryTree getLeft(){
    return left;
  }

  public BinaryTree getRight(){
    return right;
  }

  public void setData(Object obj){
    data=obj;
  }

  public boolean isEmpty(){
    return left == null;
  }

  public boolean isLeaf(){
    return !isEmpty() && left.isEmpty() && right.isEmpty();
  }

  public String toString(String indentation){
    if(isEmpty())
      return "";
    else
      return
        left.toString(indentation+"  ")+
        indentation+data.toString()+"\n"+
        right.toString(indentation+"  ");
  }

  public String toString(){
    return toString("");
  }

}