Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
Note: A leaf is a node with no children.
Example:
Given the below binary tree and sum = 22,
5
/
4 8
/ /
11 13 4
/ /
7 2 5 1
Return:
[
[5,4,11,2],
[5,8,4,5]
]
# 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, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: List[List[int]]
"""
res = []
if root is None:
return res
def findpath(a,root,sum):
# a.append(root.val)
a = a + [root.val]
if root.left is None and root.right is None and root.val==sum:
res.append(a)
# print('a:',a)
# print('res:',res)
if root.left:
findpath(a,root.left,sum-root.val)
if root.right:
findpath(a,root.right,sum-root.val)
findpath([],root,sum)
return res
使用append实际是修改一个列表,使用+实际是创建一个新的列表。