1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| type QueueNode struct {
Node *TreeNode
IsLeft bool
}
func sumOfLeftLeaves(root *TreeNode) int {
if root == nil {
return 0
}
queue := []*QueueNode{&QueueNode{Node: root, IsLeft: false}}
totalSum := 0
for len(queue) > 0 {
node, isLeft := queue[0].Node, queue[0].IsLeft
queue = queue[1:]
if isLeft && node.Left == nil && node.Right == nil {
totalSum += node.Val
}
if node.Left != nil {
queue = append(queue, &QueueNode{Node: node.Left, IsLeft: true})
}
if node.Right != nil {
queue = append(queue, &QueueNode{Node: node.Right, IsLeft: false})
}
}
return totalSum
}
|