수조 실현 순서 두 갈래 트리의 앞 순서, 중간 순서, 뒤 순서

순서 두 갈래 나무의 만족 조건: 1.보통 완전 두 갈래 나무를 가리킨다
2. n번째 원소의 왼쪽 트리는 2*n+1이다.
3. n번째 원소의 오른쪽 나무는 2*n+2이다.
4. n자 나무의 부모 노드는 (n-1)/2이다.
주의: n은 수조로 표시되기 때문에 0부터 시작합니다.
코드 구현:
package com.yg.tree;/*
@author  Mu_Mu
@date    2020/3/4  10:50
 
*/

public class ArrBinaryTreeDemo {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6, 7};
        ArrBinaryTree arrBinaryTree = new ArrBinaryTree(arr);
        //arrBinaryTree.preOrder(0);
//        arrBinaryTree.infixOrder(0);
        arrBinaryTree.postOrder(0);

    }
}

class ArrBinaryTree {
    private int[] arr;

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

    // 
    /*
     * @param index  : 
     * @return : void
     * @date : 2020/3/4 10:53
     */
    public void preOrder(int index) {
        if (arr == null && arr.length == 0) {
            System.out.println(" ");
            return;
        }
        System.out.println(arr[index]);
        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(" ");
            return;
        }
        //  (index*2+1)
        if ((index * 2 + 1) < arr.length) {
            infixOrder(index * 2 + 1);
        }
        if (index < arr.length) {
            System.out.print(arr[index] + "\t");
        }

        if ((index * 2 + 2) < arr.length) {
            infixOrder(index * 2 + 2);
        }
    }

    // 
    public void postOrder(int index) {
        if (arr == null && arr.length == 0) {
            System.out.println(" ");
            return;
        }
        if ((index * 2 + 1) < arr.length) {
            postOrder(index * 2 + 1);
        }
        if ((index * 2 + 2) < arr.length) {
            postOrder(index * 2 + 2);
        }
        if (index < arr.length) {
            System.out.println(arr[index]+"\t");
        }
    }

}

좋은 웹페이지 즐겨찾기