Загрузка общего двоичного дерева в ArrayList - PullRequest
0 голосов
/ 26 октября 2018

вопрос для всех.

Мне нужно пройти через двоичное дерево и заполнить массив каждым узлом в правильном порядке, чтобы при печати каждого элемента массива он печатался как дерево. У меня есть правильный метод печати, и метод, чтобы взять массив и создать двоичное дерево из него, правильный. Тем не менее, мой текущий метод для заполнения массива из двоичного дерева не заполняет массив в правильном порядке.

Не существует указанного метода обхода, но я использую предварительный порядок, он должен быть рекурсивным и возвращать массив, а поскольку мое двоичное дерево является универсальным, я использую ArrayList, а не массив.

Я попытался заполнить ArrayList нулем, чтобы я мог разместить элементы по указанному индексу, но у меня возникают ошибки за пределами допустимого.

Вот мой текущий код:

public static <T> ArrayList<T> loadOverToArray(BinaryNode<T> root, int index){
    int length = findDepth(root);
    long size = powerOfTwo(length);
    ArrayList<T> temp = new ArrayList<>();
    /*for(int i = 0; i < size; i++){
        temp.add(null);
    }*/

    if(root != null){
        temp.add(root.getData());
    }
    if(root.getLeft() != null){
        temp.addAll(loadOverToArray(root.getLeft(), leftChildIndex(index)));
    }
    if(root.getRight() != null){
        temp.addAll(loadOverToArray(root.getRight(), rightChildIndex(index)));
    }

    return temp;
}

Дерево, используемое для тестирования:

        8
            4
                2
                    1
                    3
                6
                    5
                    7
            12
                10
                    9
                    11
                14
                    13
                    15

И дерево, которое мне возвращает мой метод:

        8
            4
                1
                    7
                    12
                3
                    10
                    9
            2
                6
                    11
                    14
                5
                    13
                    15

Большое спасибо!

...