- Path Sum II
Medium
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,
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: TreeNode, sum: int) -> List[List[int]]:
def path(root,sum,temp,res,reslis):
if root.left == None and root.right == None and temp == sum:
copy = reslis[:]#这个地方很关键,因为如果不对reslis做一个拷贝,在回溯的时候,子列表的改变也会相应影响最终的外层结果列表的改变。
res.append(copy)
return
if root.left == None and root.right == None and temp != sum:
return
if root.left:
reslis.append(root.left.val)
path(root.left,sum,temp+root.left.val,res,reslis)
reslis.pop()
if root.right:
reslis.append(root.right.val)
path(root.right,sum,temp+root.right.val,res,reslis)
reslis.pop()
return
#考察递归和回溯
if (root==None):
return []
res = []
reslis = []
reslis.append(root.val)
path(root,sum,root.val,res,reslis)
return res