1. 题目
404. 左叶子之和
2. 实现
2.1 思路
- 声明一个判断节点是否为叶子节点的函数,方便递归时候使用
- 遍历每一个节点
- 如果存在左节点,那就判断左节点是否为叶子节点,是叶子结点就加上该节点的val,否则继续遍历该节点;
- 如果存在不是叶子节点的右节点,那继续遍历这个节点。
2.2 代码
var sumOfLeftLeaves = function(root) {
if(root === null) {
return 0;
}
return leftLeavesSum(root);
};
function isLeaves(node) {
return node.left === null && node.right === null;
}
function leftLeavesSum(node) {
let sum = 0;
if(node.left !== null) {
sum += isLeaves(node.left) ? node.left.val : leftLeavesSum(node.left);
}
if(node.right !== null && isLeaves(node.right)!== true) {
sum += leftLeavesSum(node.right);
}
return sum;
}
3. 参考
官方题解