给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
给定如下二叉树,以及目标和 sum = 22
,
5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1
返回:
[ [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, sum1):
res = []
if not root: return []
def dfs(root,path,mysum,sum1,res):
if mysum == sum1 and not root.left and not root.right:
res.append(path)
return
if root.left:
dfs(root.left,path+[root.left.val],mysum+root.left.val,sum1,res)
if root.right:
dfs(root.right,path+[root.right.val],mysum+root.right.val,sum1,res)
dfs(root,[root.val],root.val,sum1,res)
return res