代码随想录算法训练营 | 博客打卡
题目链接:leetcode 404. 左叶子之和
注:仅为个人笔记,难以细致且通俗。
一路向下探,直抵叶子节点,如果是左叶子就累加上。那么如何判断是不是左叶子?每次递进时把方向带上,告诉下一层函数当前进入的是左子树还是右子树。
func sumOfLeftLeaves(root *TreeNode) int {
res := 0
var travel func(*TreeNode, bool)
travel = func(node *TreeNode, flag bool) {
if node.Left == nil && node.Right == nil {
if flag {
res += node.Val
}
return
}
if node.Left != nil {
travel(node.Left, true)
}
if node.Right != nil {
travel(node.Right, false)
}
}
travel(root, false)
return res
}