# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:
# 返回的结果
res = []
if root is None:
return res
# 当为叶子节点的时候
if root.left is None and root.right is None:
if sum == root.val:
res.append([root.val])
return res
# 左子数遍历,找到满足条件的序列
leftN = self.pathSum(root.left, sum - root.val)
for n in leftN:
res.append([root.val] + n)
# 右子数遍历,找到满足条件的序列
rightN = self.pathSum(root.right, sum - root.val)
for n in rightN:
res.append([root.val] + n)
return res
主要是没想好递归里的归的问题,就是整个返回的路径集合就是一个列表也就是 res = [ ]。单个路径也是一个列表,每次把路径上的结点的value放进去。 某个子树里的路径可能有多条 ,所以要遍历填入当前的结点的数值。