動機

就base case特別一點的遞迴,要自己把最後一個加上去

Problem

Given the root of a binary tree and an integer targetSum, return all root-to-leaf paths where each path's sum equals targetSum.

A leaf is a node with no children.

 

Example 1:

Input: root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22Output: [[5,4,11,2],[5,8,4,5]]

Example 2:

Input: root = [1,2,3], targetSum = 5Output: []

Example 3:

Input: root = [1,2], targetSum = 0Output: []

 

Constraints:

  • The number of nodes in the tree is in the range [0, 5000].
  • -1000 <= Node.val <= 1000
  • -1000 <= targetSum <= 1000

Sol

class Solution:
    def pathSum(self, root: TreeNode, targetSum: int, acc=[], cnt=0) -> List[List[int]]:
        if not root:
            return []
        elif not root.left and not root.right:
            if cnt+root.val == targetSum:
                return [acc+[root.val]]
            else:
                return []
        else:
            return self.pathSum(root.left, targetSum, acc+[root.val], cnt+root.val)+self.pathSum(root.right, targetSum, acc+[root.val], cnt+root.val)