题目描述
You are given the root of a binary tree containing digits from 0 to 9 only.
Each root-to-leaf path in the tree represents a number.
For example, the root-to-leaf path 1 -> 2 -> 3 represents the number 123.
Return the total sum of all root-to-leaf numbers. Test cases are generated so that the answer will fit in a 32-bit integer.
A leaf node is a node with no children.
解题思路
经典递归。解题思路类似子集树。
代码
因为使用 python 实现,很多细节可以被忽略了
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def sumNumbers(self, root: Optional[TreeNode]) -> int:
self.temp = []
self.ans = 0
self.helper(root)
return self.ans
def helper(self, root):
if not root:
return
self.temp.append(root.val)
t = ""
if not root.left and not root.right:
for i in self.temp:
t += str(i)
self.ans += int(t)
self.helper(root.left)
self.helper(root.right)
self.temp.pop()