404. 左叶子之和
原题链接
计算给定二叉树的所有左叶子之和。
示例:
3
/ \
9 20
/ \
15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
要点
与【LeetCode算法修炼指南】——112.路径总和、113.路径总和II 是类型相同的题目
不同的点在于这里的终止条件需要判断叶子节点是在左边。
递归
代码片段
func sumOfLeftLeaves(root *TreeNode) int {
if root == nil {
return 0
}
var sum = 0
sumOfLeftLeavesHelper(root, &sum)
return sum
}
func sumOfLeftLeavesHelper(root *TreeNode, sum *int) {
if root == nil {
return
}
if root.Left != nil && root.Left.Left == nil && root.Left.Right == nil {
*sum = *sum + root.Left.Val
}
sumOfLeftLeavesHelper(root.Left, sum)
sumOfLeftLeavesHelper(root.Right, sum)
}
代码解释
注意终止条件是要提前判断当前结点的左结点是否符合条件。
结尾
1.博客地址
2.源代码仓库
如果你在代码里看到了用 数字标记的注释 如 //1.xxx 这是我写代码的顺序,希望能给你一点启发。