29 lines
432 B
Go
29 lines
432 B
Go
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
|