数组实现顺序存储二叉树

在这里插入图片描述

顺序存储二叉树的前中后序遍历

package com.whb.tree;

public class ArrBinaryTreeDemo {
    
    

    public static void main(String[] args) {
    
    

        int[] arr = {
    
     1, 2, 3, 4, 5, 6, 7 };
        //创建一个 ArrBinaryTree
        ArrBinaryTree arrBinaryTree = new ArrBinaryTree(arr);
        arrBinaryTree.preOrder(); // 1,2,4,5,3,6,7
        System.out.println();
        arrBinaryTree.infixOrder(); // 2,4,5,1,3,6,7
        System.out.println();
        arrBinaryTree.postOrder(); // 2,4,5,3,6,7,1

    }
}

class ArrBinaryTree{
    
    

    private int[] arr;

    public ArrBinaryTree(int[] arr){
    
    
        this.arr = arr;
    }

    public void preOrder(){
    
    
        this.preOrder(0);
    }


    public void infixOrder(){
    
    
        this.infixOrder(0);
    }

    public void postOrder(){
    
    
        this.postOrder(0);
    }

    // 前序遍历
    public void preOrder(int index){
    
    

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

    // 中序遍历
    public void infixOrder(int index){
    
    

        if (arr == null || arr.length == 0){
    
    
            System.out.println("数组为空");
        }

        // 向左递归
        if (index * 2 + 1 < arr.length){
    
    
            preOrder(index * 2 + 1);
        }

        // 输出当前元素
        System.out.print(arr[index] + "\t");

        // 向右递归
        if (index * 2 + 2 < arr.length){
    
    
            preOrder(index * 2 + 2);
        }
    }

    // 后序遍历
    public void postOrder(int index){
    
    

        if (arr == null || arr.length == 0){
    
    
            System.out.println("数组为空");
        }

        // 向左递归
        if (index * 2 + 1 < arr.length){
    
    
            preOrder(index * 2 + 1);
        }

        // 向右递归
        if (index * 2 + 2 < arr.length){
    
    
            preOrder(index * 2 + 2);
        }

        // 输出当前元素
        System.out.print(arr[index] + "\t");
    }

}

猜你喜欢

转载自blog.csdn.net/qq_46456049/article/details/113405012