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);
}