写一个函数,返回所有节点的总和,包括根节点
var nodes = {
value: 7,
left: { value: 1, left: null, right: null },
right: { value: 4, left: null, right: null }
};
考虑到这一点,结果应该等于 12。
sumTheTreeValues = root => {
console.log(root.value);
if (root.left != null) {
sumTheTreeValues(root.left);
}
if (root.right != null) {
sumTheTreeValues(root.right);
}
};
如果这段代码会记录
7
1
4
如何在不传递新参数的情况下返回这些数字的总和?
最佳答案
将左右节点值与当前值相加并返回:
var nodes = {
value: 7,
left: { value: 1, left: null, right: null },
right: { value: 4, left: null, right: null }
};
sumTheTreeValues = root => {
let value = root.value;
if (root.left != null) {
value += sumTheTreeValues(root.left);
}
if (root.right != null) {
value += sumTheTreeValues(root.right);
}
return value;
};
console.log(sumTheTreeValues(nodes));
您还可以将其缩短一点,因为 null
在添加到数字时会自动转换为 0:
var nodes = {
value: 7,
left: { value: 1, left: null, right: null },
right: { value: 4, left: null, right: null }
};
sumTheTreeValues = root => root.value +
(root.left && sumTheTreeValues(root.left)) +
(root.right && sumTheTreeValues(root.right));
console.log(sumTheTreeValues(nodes));
关于javascript - 如何使用递归对三个值求和 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49591327/