思路:找到所有根节点到叶节点的路径并存储,然后进行对每条路径求和。时间复杂度:二叉树遍历O(n)+路径求和O(n)
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
#
#
# @param root TreeNode类
# @return int整型
#
class Solution:
def sumNumbers(self , root ):
res = self.binaryTreePaths(root)
sums = 0
for i in range(len(res)):
sums = sums+int(res[i])
return sums
def binaryTreePaths(self, root: TreeNode):
if not root:
return []
result = []
def dfs(root, auxiliary):
if not root:
return
if not root.left and not root.right:
auxiliary_auxiliary = auxiliary + str(root.val)
result.append(auxiliary_auxiliary)
dfs(root.left, auxiliary + str(root.val))
dfs(root.right, auxiliary + str(root.val))
dfs(root, '')
return result

京公网安备 11010502036488号