前往此题

解题思路

这是一道很典型的深度优先搜索题。题目很明确的告诉我们需要从根节点出发按照节点路径走到底来遍历整个二叉树。
我们可以通过total这个变量来记录每条路径上的值。total * 10 + root.valtotal记录数值的终止条件为走到节点的末尾,也就是找不到它的左右子节点。
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)