父节点值为其所有子节点的总和

时间:2015-05-10 06:19:34

标签: javascript c# recursion tree

我是一个不是二叉树的编辑树(可以改变节点的值),我想在父节点中存储节点值的总和。 即:

   50
/   |   \
10  25  15
|   | \   |  \
10  3 22  10  5

在编辑中我成功改变了所有层次结构,但初始化我没有成功,例如我只是最深层次的值(10 3 22 10 5),然后想要从它开始。

2 个答案:

答案 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 
}