在给定二叉树的情况下,我很难弄清楚如何有效地创建父数组。
我正在考虑递归遍历它,问题是我不确定如何正确编写递归函数以使其返回数组。
我可以编写不返回任何内容的递归函数,该函数使用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的方式编写此函数。这是一种凌乱的做事方式吗?我是在每次调用时简单地引用哈希图还是每次都将其复制到新的哈希图中?