1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
   | package main
  import "fmt"
  type TreeNode struct {     Val   int     Left  *TreeNode     Right *TreeNode }
  func sumNumbers(root *TreeNode) int {     return dfs(root, 0) }
  func dfs(node *TreeNode, currentSum int) int {     if node == nil {         return 0     }
           currentSum = currentSum*10 + node.Val
           if node.Left == nil && node.Right == nil {         return currentSum     }
           return dfs(node.Left, currentSum) + dfs(node.Right, currentSum) }
  func main() {          root := &TreeNode{Val: 1}     root.Left = &TreeNode{Val: 2}     root.Right = &TreeNode{Val: 3}     root.Left.Left = &TreeNode{Val: 4}     root.Left.Right = &TreeNode{Val: 5}
           result := sumNumbers(root)
           fmt.Printf("根到叶子结点的数字之和是:%d\n", result) }
 
   |