题目描述
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回二维列表,内部每个列表表示找到的路径
def FindPath(self, root, expectNumber):
# write code here
if not root:
return []
#如果树为空,则返回空列表
if root and not root.left and not root.right and root.val==expectNumber:
#如果只有一个节点且与目标值相等,则返回该值
return [[root.val]]
res=[]
left = self.FindPath(root.left,expectNumber-root.val)
right = self.FindPath(root.right,expectNUmber-root.val)
#递归从左右子树中寻找符合条件的路径
for i in left+right:
res.append([root.val]+i)
#走到这一步基本上是找到了合适的路径,然后开始逆向递归求出完整路径
return res