| 123456789101112131415161718192021222324252627282930313233343536 | 
							- package main
 
- /**
 
-  * Definition for a binary tree node.
 
-  * type TreeNode struct {
 
-  *     Val int
 
-  *     Left *TreeNode
 
-  *     Right *TreeNode
 
-  * }
 
-  */
 
- func sumNumbers(root *TreeNode) int {
 
- 	sum := 0
 
- 	if root == nil {
 
- 		return sum
 
- 	}
 
- 	sumNumbersHelper(root, 0, &sum)
 
- 	return sum
 
- }
 
- func sumNumbersHelper(root *TreeNode, prefix int, sum *int) {
 
- 	prefix = prefix*10 + root.Val
 
- 	hasLeft, hasRight := root.Left != nil, root.Right != nil
 
- 	if hasLeft {
 
- 		sumNumbersHelper(root.Left, prefix, sum)
 
- 	}
 
- 	if hasRight {
 
- 		sumNumbersHelper(root.Right, prefix, sum)
 
- 	}
 
- 	if !hasLeft && !hasRight {
 
- 		*sum += prefix
 
- 	}
 
- }
 
- // func main() {
 
- // 	println(sumNumbers(sortedArrayToBST([]int{1, 2, 3})))
 
- // }
 
 
  |