주어진 인덱스가 idx 일 때
 ( 수정 필요..?)
부모 노드의 인덱스 :  idx = (idx / 2) - 1;
왼쪽 자식 노드의 인덱스 : idx = idx * 2 + 1;
오른쪽 자식 노드의 인덱스 : idx = idx * 2 + 2;
 
 
- 재귀적으로 호출하여 출력하는 구조 주의 !
- 전위 순회 : 먼저 출력 (preOrder)
- 중위 순회 : 중간에 출력 (inOrder)
- 후위 순회 : 마지막에 출력 (postOrder)

class BinaryTree {
    char[] tree;

    BinaryTree(char[] arr) {
        tree = arr.clone();
    }

    public void preOrder(int idx) { // 전위 순회
        int left = idx * 2 + 1;
        int right = idx * 2 + 2;

        System.out.print(tree[idx] + " ");
        if (left < tree.length) {
            preOrder(left);
        }
        if (right < tree.length) {
            preOrder(right);
        }
    }

    public void inOrder(int idx) { // 중위 순회
        int left = idx * 2 + 1;
        int right = idx * 2 + 2;
        if (left < tree.length) {
            inOrder(left);
        }
        System.out.print(tree[idx] + " ");
        if (right < tree.length) {
            inOrder(right);
        }
    }

    public void postOrder(int idx){ // 후위 순회
        int left = idx * 2 + 1;
        int right = idx * 2 + 2;
        if(left<tree.length){
            preOrder(left);
        }
        if(right<tree.length){
            preOrder(right);
        }
        System.out.print(tree[idx] + " ");
    }

    public void levelOrder(int idx){ // 레벨 순회
        for (int i = idx; i < tree.length; i++) {
            System.out.print(tree[i] + " ");
        }
    }
}