題目
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.
解題思路
遍歷二叉樹(這里使用前序,其他遍歷方式也可),如果是葉子節(jié)點(左右子樹都為空),且是左子樹(上層參數(shù)傳遞),則累加求值
注意
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
}