0
点赞
收藏
分享

微信扫一扫

leetcode:113. 路径总和 II

跟着Damon写代码 2022-03-11 阅读 38

在这里插入图片描述
思路:
dfs遍历每一个路径
用now tempsun和tempnode分别记录当前节点,累计和,以及累计节点
叶子节点判断结束
否则有左右孩子的话就继续dfs

注意root为none的情况

src:

# 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 []
        ans = []
        def dfs(now, tempsum, tempnode):
            # 若到达叶子节点
            if now.left is None and now.right is None:
                if tempsum == targetSum:
                    ans.append(tempnode)
                return
            
            # 若未到达叶子节点
            if now.left is not None:
                new_tempnode = copy.deepcopy(tempnode)
                new_tempnode.append(now.left.val)
                dfs(now.left, tempsum + now.left.val, new_tempnode)

            if now.right is not None:
                new_tempnode = copy.deepcopy(tempnode)
                new_tempnode.append(now.right.val)
                dfs(now.right, tempsum + now.right.val, new_tempnode)
        
        dfs(root, root.val, [root.val])
        return ans

总结:
树的dfs遍历

举报

相关推荐

0 条评论