Sum Root to Leaf Numbers
最自然的思路觉得还是利用DFS由浅入深的去把这些数字提取出来,这里可以一个数组去记录这些数字,不过为了代码简洁使用了静态变量sumOfRoot
class Solution(object):
sumOfRoot = 0
def sumNumbers(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if not root:
return 0
self.helper(root, 0)
return self.sumOfRoot
def helper(self, root, base):
if not root.left and not root.right:
self.sumOfRoot += (10 * base + root.val)
return
if root.left:
self.helper(root.left, 10 * base + root.val)
if root.right:
self.helper(root.right, 10 * base + root.val)
return
下面是利用栈迭代DFS的版本
class Solution(object):
def sumNumbers(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if not root:
return 0
stack = [[root, 0]]
result = 0
while stack:
node, base = stack.pop()
if node.left:
stack.append([node.left, 10 * base + node.val])
if node.right:
stack.append([node.right, 10 * base + node.val])
if not node.left and not node.right:
result += (10 * base + node.val)
return result