113. 路经总和II

问题描述

https://leetcode.cn/problems/path-sum-ii/description/

解题思路

首先,我们设置一个容器存储最终的结果。

其次,我们在遍历过程中,更新数组。

然后,在叶子结点处判断是否加入。

代码

复制代码
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def pathSum(self, root: Optional[TreeNode], targetSum: int) -> List[List[int]]:
        res = []
        def dfs(root, targetSum, tmp_li):
            t_copy = tmp_li[:]
            if root is None:
                return
            t_copy.append(root.val)
            if root.left is None and root.right is None and targetSum == root.val:
                res.append(t_copy)
            dfs(root.left, targetSum-root.val, t_copy)
            dfs(root.right, targetSum-root.val, t_copy)
        dfs(root, targetSum, [])
        return res
复制代码

 2024二刷:

复制代码
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def pathSum(self, root: Optional[TreeNode], targetSum: int) -> List[List[int]]:
        if root is None:
            return []
        self.res = []
        self.dfs(root, targetSum, [])
        return self.res

    def dfs(self, root, targetSum, last):
        if root.left is None and root.right is None:
            if targetSum == root.val:
                last.append(root.val)
                self.res.append(last)
            return
        last.append(root.val)
        if root.left:
            self.dfs(root.left, targetSum-root.val, last[:])
        if root.right:
            self.dfs(root.right, targetSum-root.val, last[:])
复制代码

 

posted @   BJFU-VTH  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示