Leetcode Note: Go - Sum of Leaves
Add Binary - LeetCode
https://leetcode.com/problems/add-binary/
- Go 言語で取り組んだメモ
所感
- binary tree が渡されるので末端 leaf node の合計値を int で return する
回答
Go BFS solution - LeetCode Discuss
https://leetcode.com/problems/sum-of-left-leaves/discuss/1109765/Go-BFS-solution
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func sumOfLeftLeaves(root *TreeNode) int {
if root == nil {
return 0
}
var q []*TreeNode
q = append(q, root)
sum := 0
for len(q) > 0 {
size := len(q)
for i := 0; i < size; i++ {
node := q[0]
q = q[1:]
if node.Left != nil && isLeaf(node.Left) {
sum += node.Left.Val
}
if node.Left != nil {
q = append(q, node.Left)
}
if node.Right != nil {
q = append(q, node.Right)
}
}
}
return sum
}
func isLeaf(root *TreeNode) bool {
return root.Right == nil && root.Left == nil
}
- 再帰と見せかけて再帰ではない
- for ループで Leaf Node か判別しつつ sum への加算を行っていく