实现二叉树的前序、中序、后序遍历

实现二叉树的前序、中序、后序遍历

代码实现

public class TreeDemo {
    

    public static void main(String[] str){

          int[] array = {12,76,35,22,16,48,90,46,9,40};

          BinaryTree root = new BinaryTree(array[0]);   //创建二叉树

          for(int i=1;i<array.length;i++){

           root.insert(root, array[i]);       //向二叉树中插入数据

          }

          System.out.println("先根遍历:");

          preOrder(root);

          System.out.println();

          System.out.println("中根遍历:");

          inOrder(root);

          System.out.println();

          System.out.println("后根遍历:");

          postOrder(root);
          
        }
    
        public static void preOrder(BinaryTree root){  //先根遍历

          if(root!=null){

           System.out.print(root.data+"-");

           preOrder(root.left);

           preOrder(root.right);

          }

         }

         

         public static void inOrder(BinaryTree root){     //中根遍历
          if(root!=null){

           inOrder(root.left);

           System.out.print(root.data+"--");

           inOrder(root.right);

          }

         }

         

         public static void postOrder(BinaryTree root){    //后根遍历
          if(root!=null){

           postOrder(root.left);

           postOrder(root.right);

           System.out.print(root.data+"---");

          }
         }
         
}

class BinaryTree {

     int data;      //根节点数据
     BinaryTree left;    //左子树
     BinaryTree right;   //右子树

     
     public BinaryTree(int data){ //实例化二叉树类

      this.data = data;

      left = null;

      right = null;
     }

     
     public void insert(BinaryTree root,int data){//向二叉树中插入子节点

      if(data>root.data) {//二叉树的左节点都比根节点小

       if(root.right==null){

        root.right = new BinaryTree(data);

       }else{

        this.insert(root.right, data);
       }

      }else{//二叉树的右节点都比根节点大

       if(root.left==null){

        root.left = new BinaryTree(data);

       }else{
        this.insert(root.left, data);
       }
      }
     }     
      
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值