用 java 实现二叉树

package cglib;
/**
 * 说明生活中遇到的二叉树,用 java 实现二叉树 。
 * store(int value)可以选择二叉树中是否可以存在相同的值
 */  
public class BinaryTree {
     public int value;
     public BinaryTree right;
     public BinaryTree left;
     
     public static void main(String args[]){
         int[] data=new int[5];
         StringBuffer sb = new StringBuffer();
         for(int i=0;i<data.length;i++){
            data[i]=(int)(Math.random()*100)+1;//0+1<<x*100+1<<1*100+1  
             sb.append(data[i] + ",");  
         }
        
         int len = sb.length();
          if(len >0){
           sb.deleteCharAt(len-1);
          }//去掉最后一个逗号
          
          System.out.println(sb.toString());
          
         BinaryTree root = new BinaryTree();
         root.value = data[0];
         System.out.println("root.value="+root.value);
         for(int i=1; i<data.length; i++){  
             root.store(data[i]);  
         }
         System.out.println("root.find(5)="+root.find(5));
         root.preList();  
         System.out.println();  
         root.middleList();  
         System.out.println();  
         root.afterList();  
     }
     
     public void store(int value){
         System.out.println("存储value=" +value);
         System.out.println("store:this.value=" +this.value);
         if(value<this.value){  
             if(left==null){  
                 left = new BinaryTree();  
                 left.value=value;  
             }else{  
                 left.store(value);  
             }  
         }else if(value>this.value){  
             if(right==null){  
                 right = new BinaryTree();  
                 right.value=value;  
             }else{  
                 right.store(value);  
             }  
         }//已经存在的值,即值相等的值,不插入  
     }
     
     
     public boolean find(int value){
         System.out.println("找寻value=" +value);
         System.out.println("find:this.value=" +this.value);
        
         if(value ==this.value)
         {
         return true;
         }
         else if(value>this.value){
             if(right ==null){
                 return false;
             }
             return right.find(value);
         }else
         {
             if(left ==null){
                 return false;
             }
             return left.find(value);
             }
        
     }
     
     
     
   //先序遍历  
     public void preList(){  
         System.out.print(this.value+",");  
         if(left!=null)left.preList();  
         if(right!=null)right.preList();  
     }  
     
     //中序遍历  
     public void middleList(){  
        
         if(left!=null)left.middleList();  
         System.out.print(this.value+",");  
         if(right!=null)right.middleList();  
     }  
     
     public void afterList(){  
        
         if(left!=null)left.afterList();       
         if(right!=null)right.afterList();  
         System.out.print(this.value+",");  
     }  
    
    
}

输出:

47,8,45,72,34
root.value=47
存储value=8
store:this.value=47
存储value=45
store:this.value=47
存储value=45
store:this.value=8
存储value=72
store:this.value=47
存储value=34
store:this.value=47
存储value=34
store:this.value=8
存储value=34
store:this.value=45
找寻value=5
find:this.value=47
找寻value=5
find:this.value=8
root.find(5)=false
47,8,45,34,72,
8,34,45,47,72,
34,45,8,72,47,

转载于:https://my.oschina.net/u/2822116/blog/780607

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值