java遞歸以順序二叉樹的方式遍歷數組

數組可以轉換爲樹,樹也可以轉換爲數組

在這裏插入圖片描述

順序存儲二叉樹的特點:

  • 順序存儲二叉樹通常只考慮完全二叉樹
  • 第n個元素的左子節點爲 2 * n + 1
  • 第n個元素的右子節點爲 2 * n + 2
  • 第n個元素的父節點爲: (n -1) / 2
  • n表示二叉樹中第幾個元素【從0開始編號】

需求

給你一個數組,要求以二叉樹的方式遍歷

public class ArrBinaryTree {
    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7};
        System.out.println("前序遍歷");  //1	2	4	5	3	6	7
        arrayPreTravel(arr, 0);
        System.out.println("\n中序遍歷"); //4	2	5	1	6	3	7
        arrayMidTarvel(arr, 0);
        System.out.println("\n後序遍歷");
        arrayBackTarvel(arr, 0); //4	5	2	6	7	3	1
    }

    public static void arrayPreTravel(int [] arr, int index){
        if (arr == null || index >= arr.length){
            return;
        }

        System.out.printf("%d\t", arr[index]);
        arrayPreTravel(arr, 2*index + 1);
        arrayPreTravel(arr, 2*index + 2);
    }

    public static void arrayMidTarvel(int [] arr, int index){
        if (arr == null || index >= arr.length){
            return;
        }

        arrayMidTarvel(arr, 2*index + 1);
        System.out.printf("%d\t", arr[index]);
        arrayMidTarvel(arr, 2*index + 2);
    }

    public static void arrayBackTarvel(int [] arr, int index){
        if (arr == null || index >= arr.length){
            return;
        }

        arrayBackTarvel(arr, 2*index + 1);
        arrayBackTarvel(arr, 2*index + 2);
        System.out.printf("%d\t", arr[index]);
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章