参考了其他人的解法,整理出来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) } }