Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 二叉搜索树中左子级的和_Java_Binary Search Tree - Fatal编程技术网

Java 二叉搜索树中左子级的和

Java 二叉搜索树中左子级的和,java,binary-search-tree,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.getLef

我有下面的代码,它将二叉搜索树中的每个节点替换为其子节点的总和

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

我似乎做得不对。感谢您的帮助。

为什么不删除getRight sum if语句?我试过了,它不起作用,因为对于内部节点,右和是左和的一部分。为什么不删除getRight sum if语句呢?我试过了,它不起作用,因为对于内部节点,右和是左和的一部分。
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);
    }
}
int sumOfLeftChildren(Node* root){
    if(!root) return 0;
    sumOfLeftChildren(root->right);
    return root->val += sumOfLeftChildren(root->left);
}