参考了其他人的解法,整理出来go的写法
首先,这里使用了DFS递归
package main
import . "nc_tools"
/*
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/**
*
* @param root TreeNode类
* @return int整型
*/
func sumNumbers( root *TreeNode ) int {
// write code here
if root == nil {
return 0
}
sum := 0
//DFS递归写法
DFS(root, root.Val, &sum)
return sum
}
// DFS 递归写法
// num 为当前节点之前的和 + 当前节点的值
func DFS(node *TreeNode, num int, sum *int) {
// 如果左右子节点都为空,则说明到达了叶子节点
// 此时需要把整个路径上的数字加到结果中
if node.Left == nil && node.Right == nil {
*sum = *sum + num
return
}
// 左右子节点不为空,则进入到下一层递归
if node.Left != nil {
DFS(node.Left, num*10 + node.Left.Val, sum)
}
if node.Right != nil {
DFS(node.Right, num*10 + node.Right.Val, sum)
}
} 
京公网安备 11010502036488号