目录

0113:路径总和 II(★)

力扣第 113 题

题目

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。

叶子节点 是指没有子节点的节点。

示例 1:

输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
输出:[[5,4,11,2],[5,8,4,5]]

示例 2:

输入:root = [1,2,3], targetSum = 5
输出:[]

示例 3:

输入:root = [1,2], targetSum = 0
输出:[]

提示:

  • 树中节点总数在范围 [0, 5000]
  • -1000 <= Node.val <= 1000
  • -1000 <= targetSum <= 1000

分析

0112 升级版,可以用递归或遍历,递归时 dfs 返回符合的路径即可。

解答

1
2
3
4
5
6
7
8
9
class Solution:
    def pathSum(self, root: Optional[TreeNode], targetSum: int) -> List[List[int]]:
        def dfs(u,s):
            if not u:
                return []
            if not u.left and not u.right and u.val==s:
                return [[s]]
            return [[u.val]+sub for sub in dfs(u.left,s-u.val)+dfs(u.right,s-u.val)]
        return dfs(root, targetSum)

45 ms