lc-go/solutions/10/q1022/solution.go

30 lines
541 B
Go

// Package q1022 implements a solution for https://leetcode.com/problems/sum-of-root-to-leaf-binary-numbers/
package q1022
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func sum(node *TreeNode, prefix int, ret *int) {
if node == nil {
return
}
num := prefix<<1 + node.Val
if node.Left == nil && node.Right == nil {
*ret += num
} else {
sum(node.Left, num, ret)
sum(node.Right, num, ret)
}
}
func sumRootToLeaf(root *TreeNode) int {
ret := 0
sum(root, 0, &ret)
return ret
}
var _ = sumRootToLeaf