题目描述:
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
给定如下二叉树,以及目标和sum = 22
返回:
[
[5,4,11,2],
[5,8,4,5]
]
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def pathSum(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: List[List[int]]
"""
#思路:从当前位置开始向下遍历,若遇到满足条件的情况,则将其结果保存到res中去
res = []
temp = []
if root == None:
return res
#定义一个函数,不断寻找可能满足条件的路线
def find(node,sum_,res,t):
t.append(node.val)
if node.left == None and node.right == None and node.val == sum_:
res.append(t)
else:
if node.left != None:
p = [x for x in t]
find(node.left,sum_-node.val,res,p)
if node.right != None:
q = [x for x in t]
find(node.right,sum_-node.val,res,q)
find(root,sum,res,temp)
return res
菜鸟一枚,代码仅供参考,如有问题,望指正~