给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
给定如下二叉树,以及目标和 sum = 22,
5
/ \
4 8
/ / \
11 13 4
/ \ / \
7 2 5 1
返回:
1 2 3 4
| [ [5,4,11,2], [5,8,4,5] ]
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
class Solution(object): def pathSum(self, root, sum): """ :type root: TreeNode :type sum: int :rtype: List[List[int]] """ import copy def pathSumHelper(root, sum, ans, t=[]): if not root: return t.append(root.val) if not root.left and not root.right and root.val == sum: ans.append(copy.copy(t)) else: pathSumHelper(root.left, sum-root.val, ans, t) pathSumHelper(root.right, sum-root.val, ans, t) t.pop() ans = [] pathSumHelper(root, sum, ans) return ans
|