我有以下代码,用二进制搜索树中的每个节点替换其子节点的总和。
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
我似乎无法做对。任何帮助表示赞赏。
答案 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);
}