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