Создание родительского массива с заданным двоичным деревом - PullRequest
0 голосов
/ 04 марта 2019

Мне трудно понять, как эффективно создать родительский массив на основе двоичного дерева.

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

Я могу написать рекурсивную функцию, которая ничего не возвращает, которая использует HashMap для сопоставления детей с их родителями:

public void fillParentArray(Node root, HashMap<Integer, Integer> hm) {
        if(root == null) {
            return;
        }

        fillParentArray(root.left, hm);
        fillParentArray(root.right, hm);
        if(root.left != null) {
            hm.put(root.left.data, root.data);
        }
        if(root.right != null) {
            hm.put(root.right.data, root.data);
        }
    }

Я не знаю, какнаписать эту функцию таким образом, чтобы она возвращала HashMap.Это грязный способ делать вещи?Я просто ссылаюсь на хэш-карту при каждом вызове, или она каждый раз копируется в новую хэш-карту?

...