public class BinTree {

  public BinTree( BinTree left, int datum, BinTree  right)
    {this.left=left;this.datum=datum;this.right=right;}

  public BinTree(int datum, BinTree  right)
    {this.left=null;this.datum=datum;this.right=right;}

  public BinTree( BinTree left, int datum)
    {this.left=left;this.datum=datum;this.right=null;}

  public BinTree(int datum)
    {this.left=null;this.datum=datum;this.right=null;}
    
  private  BinTree left;
  private int datum;
  private  BinTree right;
    

  public static boolean isSearchTree(BinTree t)
  //returns true if t is a binary SEARCH tree; false otherwise
    {  return true;
    }

  public static boolean isCompleteAndBalanced(BinTree t)
    {  return isCompleteAndBalancedAux(t) != -1;}
    
  public static int isCompleteAndBalancedAux(BinTree t) {
    // return height of balanced tree; otherwise -1 
    
    return 117;

    }


  public static boolean isAVL(BinTree t)
    {  return isAVLAux(t) != -1;}
    
  public static int isAVLAux(BinTree t) {
    // return height of balanced tree; otherwise -1 
    
    return 117;   // Math.

    }


    public static void printTree(BinTree t)
       {printTree(t, "");}
    
    public static void printTree(BinTree t, String  indent)
       { 
       }


    public static void main (String [] args)
    {  BinTree t = new BinTree
                        (  new BinTree(1),
                           2,
                           new BinTree(3, new BinTree(4)));
    
       //BinTree t = new BinTree
       //                 (  new BinTree(new BinTree(4),1,new BinTree(4)),
       //                   2,
       //                   new BinTree(new BinTree(4),3, new BinTree(4)));
    
    
       printTree(t);
      
       System.out.println( "t.isSearchTree(t) " + isSearchTree(t));
       System.out.println( "t.isCompleteAndBalanced(t) " + isCompleteAndBalanced(t));
       System.out.println( "isAVL(t) " + isAVL(t));
       
    }
    

}
