题目
Find the sum of all left leaves in a given binary tree.
Example:
3
/ \
9 20
/ \
15 7
There are two left leaves in the binary tree, with values 9 and 15 respectively. Return 24.
解题思路
遍历二叉树(这里使用前序,其他遍历方式也可),如果是叶子节点(左右子树都为空),且是左子树(上层参数传递),则累加求值
注意
sum为全局变量,每次计算前需要初始化该值
代码
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func PreOrderTravel(t *TreeNode, left bool) {
if nil == t {
return
}
if left && nil == t.Left && nil == t.Right {
sum += t.Val
}
PreOrderTravel(t.Left, true)
PreOrderTravel(t.Right, false)
}
var sum int
func sumOfLeftLeaves(root *TreeNode) int {
sum = 0
PreOrderTravel(root, false)
return sum
}