java实现简单的二叉树

package  com.oterman.test;
/**
 * 二叉树,两颗子树,左小右大;
 * 前序遍历:自己,左,右;
 * 中序:左,自己,右
 * 后序:左,右,自己
 *  @author  大蘑菇
 *
 */

  class  Node {
      public  int  value  ;
      public  Node  left ;  //左节点
      public  Node  right ;
     
      //存入数据,左小,右大;
      public  void  store( int  value)
     {
            if (value< this . value )
          {
                if ( left  ==  null )
              {
                     left  =  new  Node();
                     left .  value =value;
              }
                else
              {
                     left .store(value);  //迭代存储,
              }
          }
            else  if  (value> this .  value )
          {
                if ( right  ==  null )
              {
                     right  =  new  Node();
                     right .  value =value;
              }
                else
              {
                     right .store(value);
              }             
          }
     }
     
      /**
      * 查找数据,迭代查找;
      */
      public  boolean  find( int  value)
     {    
          System.  out .println( "happen "  +  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 .preList();  //注意是preList(),不是middleList();
          System.  out .print( this  . value  +  ","  );
            if ( right  != null )  right .preList();      
     }
      /**
      * 后序遍历,左,右,自己;
      */
      public  void  afterList()
     {
            if ( left  != null )  left .preList();
            if ( right  != null )  right .preList();
          System.  out .print( this  . value  +  ","  );        
     }    
      public  static  void  main(String [] args)
     {
            int  [] data =  new  int [10];
            for ( int  i=0;i<data. length ;i++)
          {
              data[i] = (  int )(Math.random()*100) + 1;
              System.  out .print(data[i] +  ","  );
          }
          System.  out .println();
          
          Node root =  new  Node();
          root.  value  = data[0];
            for ( int  i=1;i<data. length ;i++)
          {
              root.store(data[i]);
          }
          
          root.find(data[8]);
          
          root.preList();
          System.  out .println();
          root.middleList();
          System.  out .println();        
          root.afterList();
     }
}


结果:
46,91,26,19,18,11,25,2,84,14,
happen 46
happen 91
happen 84
46,26,19,18,11,2,14,25,91,84,//前序
26,19,18,11,2,14,25,46,91,84,//中序
26,19,18,11,2,14,25,91,84,46,//后序
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值