129.go 685 B

123456789101112131415161718192021222324252627282930313233343536
  1. package main
  2. /**
  3. * Definition for a binary tree node.
  4. * type TreeNode struct {
  5. * Val int
  6. * Left *TreeNode
  7. * Right *TreeNode
  8. * }
  9. */
  10. func sumNumbers(root *TreeNode) int {
  11. sum := 0
  12. if root == nil {
  13. return sum
  14. }
  15. sumNumbersHelper(root, 0, &sum)
  16. return sum
  17. }
  18. func sumNumbersHelper(root *TreeNode, prefix int, sum *int) {
  19. prefix = prefix*10 + root.Val
  20. hasLeft, hasRight := root.Left != nil, root.Right != nil
  21. if hasLeft {
  22. sumNumbersHelper(root.Left, prefix, sum)
  23. }
  24. if hasRight {
  25. sumNumbersHelper(root.Right, prefix, sum)
  26. }
  27. if !hasLeft && !hasRight {
  28. *sum += prefix
  29. }
  30. }
  31. // func main() {
  32. // println(sumNumbers(sortedArrayToBST([]int{1, 2, 3})))
  33. // }