顺序储存二叉树的遍历

143 阅读1分钟

编写一个ArrayBinaryTree,实现顺序存储二叉树遍历! R-C.jfif

class ArrayBinaryTree{
    private int[] arr;//此处为创建存储数据节点的数组
    public ArrayBinaryTree(int[] arr){
        this.arr=arr;
    }
    //重载preOrder
    public void preOrder(){
        this.preOrder(0);
    }

编写方法完成顺序存储二叉树的前序遍历
index是数组的下标
如果数组为空或者arr.length=0则输出数组为空。

    public void preOrder(int index){
    
        
        
        if (arr==null||arr.length==0){
            System.out.println("数组为空");
        }
        //输出当前元素
        System.out.println(arr[index]);
        //向左递归遍历
        if (index*2+1< arr.length){
            preOrder(2*index+1);
        }
        //向右递归
        if (index*2+2< arr.length){
            preOrder(index*2+2);
        }
    }

编写方法完成顺序存储二叉树的中序遍历

    public void infixOrder(int index){
        //如果数组为空或者arr.length=0
        if (arr==null||arr.length==0){
            System.out.println("数组为空");
        }
        //向左递归遍历
        if (index*2+1< arr.length){
            preOrder(2*index+1);
        }
        //输出当前元素
        System.out.println(arr[index]);
        //向右递归
        if (index*2+2< arr.length){
            preOrder(index*2+2);
        }
    }

编写方法完成顺序存储二叉树的后序遍历

  public void postOrder(int index){
      //如果数组为空或者arr.length=0
      if (arr==null||arr.length==0){
          System.out.println("数组为空");
      }
      //向左递归遍历
      if (index*2+1< arr.length){
          preOrder(2*index+1);
      }
      //向右递归
      if (index*2+2< arr.length){
          preOrder(index*2+2);
      }
      //输出当前元素
      System.out.println(arr[index]);
  }
}