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(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def __init__(self): self.res = [] def pathSum(self, root, sum): """ :type root: TreeNode :type sum: int :rtype: List[List[int]] """ if root is None: return [] self.helper(root, sum, []) return self.res def helper(self, root, sum, tmp_l): if root.left is None and root.right is None: if sum == root.val: self.res.append(tmp_l + [root.val]) else: return None #每次进入函数,取剩下的值,并且重新创建节点值列表 if root.left: self.helper(root.left, sum-root.val, tmp_l+[root.val]) if root.right: self.helper(root.right, sum-root.val, tmp_l+[root.val])