public class Tree{
      Node pera=new Node();
      //Node pera1=new Node();
     //建树
     public Node creattree(Node b,int a){
        
        if(pera.data==0){
          pera.data=a;
        
        }else if(a>=pera.data){
              
               
             creattree(pera.right,a);
              
            }else{
           
            creattree(pera.left,a);
           
           
            }
          
          return pera;     
      }

    //遍历
      public void treeout(Node pera1){
      
           if(pera==null)
            return;
           System.out.println(pera.data);
           treeout(pera.left);
           treeout(pera.right);
      
       }
     //查找
      public boolean chazhao(Node pera,int a){
      
            boolean k=false;
            if(pera.data==a)
               k=true;
             chazhao(pera.left,a);
             chazhao(pera.right,a);
              return k;
       }
      
      //计算高度
       public int leaves(){
      
         int leaveno;
         if(pera==null)
          return -1;
         
         int leaveleft=(pera.left==null?0:leaves());
         int leaveright=(pera.right==null?0:leaves());
         leaveno=(leaveleft<leaveright)?leaveleft:leaveright;
         return leaveno;
       }
}class Node{
   int data;
   Node left,right;
   
   public Node(){
   
     data=0;
     left=right=null;
   
    }
   
   public Node(int data){
   
     this.data=data;
     left=right=null;
   
    }}class text1{   public static void main(String[] arge){
        
        Tree B=new Tree();
        //Tree C=new Tree();
         for(int i=1;i<5;i++){
            
           // Node A=new Node(i);
         
            B.creattree(B.pera,i);         
          }
         
         
          B.treeout(B.pera);
          boolean k=B.chazhao(B.pera,4);
          int a=B.leaves();
          System.out.println(a);
          System.out.println(k);
    }}建树那段不知道应该怎么写,高手指点一下。

解决方案 »

  1.   

    public class IntTree
    5 {
    6 private static class IntTreeNode
    7 {
    8 private int data;
    9 private IntTreeNode leftLink;
    10 private IntTreeNode rightLink;
    11
    12 public IntTreeNode(int newData, IntTreeNode newLeftLink,
    13 IntTreeNode newRightLink)
    14 {
    15 data = newData;
    16 leftLink = newLeftLink;
    17 rightLink = newRightLink;
    18 }
    19 } //End of IntTreeNode inner class
    20 private IntTreeNode root;
    21 public IntTree( )
    22 {
    23 root = null;
    24 }
    25 public void add(int item)
    26 {
    27 root = insertInSubtree(item, root);
    28 }
    29 public boolean contains(int item)
    30 {
    31 return isInSubtree(item, root);
    32 }
    33 public void showElements( )
    34 {
    35 showElementsInSubtree(root);
    36 }41 private static IntTreeNode insertInSubtree(int item,
    42 IntTreeNode subTreeRoot)
    43 {
    44 if (subTreeRoot == null)
    45 return new IntTreeNode(item, null, null);
    46 else if (item < subTreeRoot.data)
    47 {
    48 subTreeRoot.leftLink = insertInSubtree(item, subTreeRoot.leftLink);
    49 return subTreeRoot;
    50 }
    51 else //item >= subTreeRoot.data
    52 {
    53 subTreeRoot.rightLink = insertInSubtree(item, subTreeRoot.rightLink);
    54 return subTreeRoot;
    55 }
    }
     private static boolean isInSubtree(int item, IntTreeNode subTreeRoot)
     {
    59 if (subTreeRoot == null)
    60 return false;
    61 else if (subTreeRoot.data == item)
    62 return true;
    63 else if (item < subTreeRoot.data)
    64 return isInSubtree(item, subTreeRoot.leftLink);
    65 else //item >= link.data
    66 return isInSubtree(item, subTreeRoot.rightLink);
    67 }
    68 private static void showElementsInSubtree(IntTreeNode subTreeRoot)
    69 { //Uses inorder traversal.
    70 if (subTreeRoot != null)
    71 {
    72 showElementsInSubtree(subTreeRoot.leftLink);
    73 System.out.print(subTreeRoot.data + " ");
    74 showElementsInSubtree(subTreeRoot.rightLink);
    75 } //else do nothing. Empty tree has nothing to display.
    76 }
    77 }这个是二分查找树的 可以了吧