题目
代码与解析
左叶子节点, 首先要弄清楚这个左叶子节点是一个什么东西,以及怎么判断,
左叶子节点从当前节点判断不出来的,要从父节点看。
依然使用递归来做
func sumOfLeftLeaves(root *TreeNode) int {
sum := 0
var traversal func(root *TreeNode)
traversal = func (node *TreeNode){
// 这个左叶子就很离谱
if node.Left!=nil&&node.Left.Left==nil&&node.Left.Right==nil{
// 左叶子节点, 必须通过父节点才能判断左叶子节点
// fmt.Println(node.Left.Val)
sum += node.Left.Val
// return 这里不能return,下面还要遍历添加节点
}
if node.Left!=nil{
traversal(node.Left)
}
if node.Right!=nil{
traversal(node.Right)
}
}
traversal(root)
return sum
}
注意一点,题目中说的哪里,不能return, 至于上一篇博文的哪道题递归加回溯LeetCode:257里为什么判断到叶子结点那里,return是可以不加的!!