leetcode:路径总和||(python)

系统 1537 0

1. 题目描述

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

说明: 叶子节点是指没有子节点的节点。

示例:
给定如下二叉树,以及目标和 sum = 22,

            
                        5
         / \
        4   8
       /   / \
      11  13  4
     /  \    / \
    7    2  5   1

            
          

返回:

[
[5,4,11,2],
[5,8,4,5]
]

2. 思路

还是利用递归,不过要记录每一步的root.val。

            
              
                class
              
              
                Solution
              
              
                :
              
              
                def
              
              
                pathSum
              
              
                (
              
              self
              
                ,
              
               root
              
                :
              
               TreeNode
              
                ,
              
              
                sum
              
              
                :
              
              
                int
              
              
                )
              
              
                -
              
              
                >
              
               List
              
                [
              
              List
              
                [
              
              
                int
              
              
                ]
              
              
                ]
              
              
                :
              
              
                if
              
               root 
              
                ==
              
              
                None
              
              
                :
              
              
                return
              
              
                [
              
              
                ]
              
              
        temp 
              
                =
              
              
                [
              
              
                ]
              
              
        result 
              
                =
              
              
                [
              
              
                ]
              
              
                return
              
               self
              
                .
              
              dfs
              
                (
              
              root
              
                ,
              
              
                sum
              
              
                ,
              
              temp
              
                ,
              
              result
              
                )
              
              
                def
              
              
                dfs
              
              
                (
              
              self
              
                ,
              
              root
              
                ,
              
              
                sum
              
              
                ,
              
              tempPath
              
                ,
              
              res
              
                )
              
              
                :
              
              
                if
              
               root 
              
                ==
              
              
                None
              
              
                :
              
              
                return
              
               res
        
              
                if
              
               root
              
                .
              
              val 
              
                ==
              
              
                sum
              
              
                and
              
              
                not
              
               root
              
                .
              
              left 
              
                and
              
              
                not
              
               root
              
                .
              
              right
              
                :
              
              
                # 如果相等且为叶节点,将root加入字结果中,并将直接过加入res
              
              
            tempPath 
              
                +=
              
              
                [
              
              root
              
                .
              
              val
              
                ]
              
               
            res
              
                .
              
              append
              
                (
              
              tempPath
              
                )
              
              
                # 继续向下递归
              
              
        self
              
                .
              
              dfs
              
                (
              
              root
              
                .
              
              left
              
                ,
              
              
                sum
              
              
                -
              
              root
              
                .
              
              val
              
                ,
              
              tempPath
              
                +
              
              
                [
              
              root
              
                .
              
              val
              
                ]
              
              
                ,
              
              res
              
                )
              
              
        self
              
                .
              
              dfs
              
                (
              
              root
              
                .
              
              right
              
                ,
              
              
                sum
              
              
                -
              
              root
              
                .
              
              val
              
                ,
              
              tempPath
              
                +
              
              
                [
              
              root
              
                .
              
              val
              
                ]
              
              
                ,
              
              res
              
                )
              
              
                return
              
               res

            
          

更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论