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 @ 2023-01-29 12:40  BJFU-VTH  阅读(20)  评论(0编辑  收藏  举报