二进制搜索树中左子的总和

时间:2016-07-18 14:45:07

标签: java binary-search-tree

我有以下代码,用二进制搜索树中的每个节点替换其子节点的总和。

public static void sumofChild(Node root) {
    if (root == null) return;
    sumofChild(root.getLeft());
    sumofChild(root.getRight());
    if (root.getLeft() != null) {
        int sum = root.getData() + root.getLeft().getData();
        root.setData(sum);
    }
    if (root.getRight() != null) {
        int sum = root.getData() + root.getRight().getData();
        root.setData(sum);
    }
}

现在我希望修改此代码以仅使用其左子节点的总和来更新每个节点。

所以基本上如果这是我的输入树,

   12 
  9 14
7 10 13 17

输出树必须是,

    28
  16 27
7 10 13 17

我似乎无法做对。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

public static void sumofChild(Node root) {
    if (root == null) return;
    sumofChild(root.getLeft());
    sumofChild(root.getRight());
    if (root.getLeft() != null) {
        int sum = root.getData() + root.getLeft().getData();
        root.setData(sum);
    }
}

答案 1 :(得分:0)

int sumOfLeftChildren(Node* root){
    if(!root) return 0;
    sumOfLeftChildren(root->right);
    return root->val += sumOfLeftChildren(root->left);
}