文章目录
404. 左叶子之和
给定二叉树的根节点 root ,返回所有左叶子之和。
示例 1:

输入: root = [3,9,20,null,null,15,7]
输出: 24
解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
示例 2:
输入: root = [1]
输出: 0
提示:
- 节点数在 [1, 1000] 范围内
- -1000 <= Node.val <= 1000
解题思路
以往二叉树都是找当前节点,该题提供了新的场景,需要通过找到当前节点的父节点,才能知道当前节点是不是左孩子。
Go代码
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func sumOfLeftLeaves(root *TreeNode) int {
if root == nil {
return 0
}
res := 0
dfs(root,&res)
return res
}
func dfs(root *TreeNode,res *int) {
if root == nil {
return
}
// 叶子节点没有左孩子,可以直接返回了
if root.Left == nil && root.Right == nil {
return
}
// 要找的是父节点的左孩子,并且是叶子节点
if root.Left != nil && root.Left.Left == nil && root.Left.Right == nil {
*res += root.Left.Val
}
if root.Left != nil {
dfs(root.Left,res)
}
if root.Right != nil {
dfs(root.Right,res)
}
}

526

被折叠的 条评论
为什么被折叠?



