从根到叶的二进制数之和
一句话说明
路径上的二进制数就是“上一层结果左移一位,再加上当前节点值”。
Go 代码
func sumRootToLeaf(root *TreeNode) int {
var dfs func(node *TreeNode, cur int) int
dfs = func(node *TreeNode, cur int) int {
if node == nil {
return 0
}
cur = cur*2 + node.Val
if node.Left == nil && node.Right == nil {
return cur
}
return dfs(node.Left, cur) + dfs(node.Right, cur)
}
return dfs(root, 0)
}关键点
路径值要一路带着往下传,到了叶子节点再收割答案。