我是一个不是二叉树的编辑树(可以改变节点的值),我想在父节点中存储节点值的总和。 即:
50
/ | \
10 25 15
| | \ | \
10 3 22 10 5
在编辑中我成功改变了所有层次结构,但初始化我没有成功,例如我只是最深层次的值(10 3 22 10 5),然后想要从它开始。
答案 0 :(得分:4)
我的策略是进行自上而下的遍历。叶节点只返回其当前值。内部节点根据子节点的总和重新计算。
function initialize(node) {
// internal nodes get their total from children
if (node.children.length > 0) {
node.value = 0;
for (var i = 0; i < node.children.length; i++) {
node.value += initialize(node.children[i]);
}
}
return node.value;
}
initialize(root);
答案 1 :(得分:0)
尝试使用子节点值更新父节点值,例如
Node node = //get the changed node
while (node.Parent != null)
{
node = node.Parent;
// set node.Value from sum of node.childnode values
}