https://leetcode.com/problems/path-sum-ii/
基本思路和上一题一样,维护两个list,存储答案的ans和存储当前路径的path,用DFS优先搜索到叶子节点,如果符合sum要求,在ans中加入当前路径的list,如果对路径path使用append会改变path内容,所以此类问题,传参的时候一定要注意用+,不会改变原内容。
class Solution:
def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:
if root == None:
return []
if root.left == None and root.right == None:
if sum == root.val:
return [[root.val]]
ans = []
path = [root.val]
if root.left:
self.findPath(root.left, sum - root.val, ans, path)
if root.right:
self.findPath(root.right, sum - root.val, ans, path)
return ans
def findPath(self, root, sum, ans, curPath):
if root.left == None and root.right == None:
if sum == root.val:
ans.append(curPath + [root.val])
if root.left:
self.findPath(root.left, sum-root.val, ans, curPath + [root.val])
if root.right:
self.findPath(root.right, sum-root.val, ans, curPath + [root.val])