解题思路
这是一道很典型的深度优先搜索题。题目很明确的告诉我们需要从根节点出发按照节点路径走到底来遍历整个二叉树。
我们可以通过total
这个变量来记录每条路径上的值。total * 10 + root.val
,total
记录数值的终止条件为走到节点的末尾,也就是找不到它的左右子节点。
total
记录的终止条件 :
root.left == null && root.right == null
代码
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def sumNumbers(self, root: TreeNode) -> int:
def dfs(root, total):
if not root: return 0
num = total * 10 + root.val
if not root.left and not root.right: return num
else: return dfs(root.left, num) + dfs(root.right, num)
return dfs(root, 0)