129 求从根节点到叶子节点数字之和-中等
给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字:
例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。 计算从根节点到叶节点生成的 所有数字之和 。
叶节点 是指没有子节点的节点。
分析:
自顶向下递归,并且携带已知的值;当遇到叶子节点时计算到结果中。
// date 2023/10/23
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func sumNumbers(root *TreeNode) int {
var ans int
var dfs func(root *TreeNode, has int)
dfs = func(root *TreeNode, has int) {
if root == nil {
return
}
if root.Left == nil && root.Right == nil {
ans += has + root.Val
return
}
has = (has + root.Val) * 10
if root.Left != nil {
dfs(root.Left, has)
}
if root.Right != nil {
dfs(root.Right, has)
}
}
dfs(root, 0)
return ans
}
最后更新于