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 = Noneclass 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实际是修改一个列表,使用+实际是创建一个新的列表。
参考: