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] ]
Time: O(N)
Space: O(Height)
# 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: TreeNode, sum: int) -> List[List[int]]: res, lst = [], [] self.helper(root, sum, res, lst) return res def helper(self, root, sum, res, lst): if root is None: return if root.left is None and root.right is None: if sum == root.val: lst.append(root.val) res.append(list(lst)) lst.pop() return lst.append(root.val) left = self.helper(root.left, sum - root.val, res, lst) right = self.helper(root.right, sum - root.val, res, lst) lst.pop()