zoukankan      html  css  js  c++  java
  • leetcode-113 路径之和

    leetcode-113 路径之和

    题目描述:

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

    解法一:找出所有路径,依次判断

    # 注意函数名和变量名字冲突
    class Solution:
        def pathSum(self, root: TreeNode, sum_: int) -> List[List[int]]:
            self.res = []
            self.findPath(root,[])
            return [v for v in self.res if sum(v)==sum_]
        
        
        def findPath(self,root,path):
            if not root:
                return
            if not root.left and not root.right:
                path.append(root.val)
                self.res.append(path)
                return 
            self.findPath(root.left,path+[root.val])
            self.findPath(root.right,path+[root.val])
    

    解法二:直接判断,满足就加进去,速度比第一个慢

    class Solution:
        def pathSum(self, root: TreeNode, sum_: int) -> List[List[int]]:
            self.res = []
            self.findPath(root,[],sum_)
            return self.res
        def findPath(self,root,path,sum_):
            if not root:
                return
            if not root.left and not root.right and root.val==sum_:
                # path.append(root.val)
                self.res.append(path+[root.val])
                return 
            self.findPath(root.left,path+[root.val],sum_-root.val)
            self.findPath(root.right,path+[root.val],sum_-root.val)
    
    class Solution:
        def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:
            if not root:
                return []
            self.path = []
            self.tmp = sum
            
            def calSum(tmp_path,now,root):
                if not root:
                    return False
                if not root.left and not root.right and root.val + now== self.tmp:
                    self.path.append(tmp_path+[root.val])
                if root.left:
                    calSum(tmp_path+[root.val],now+root.val,root.left)
                if root.right:
                    calSum(tmp_path+[root.val],now+root.val,root.right)
            calSum([],0,root)
            return self.path
    
  • 相关阅读:
    常用英语口语绝佳句型100句
    Mac Keyboard Shortcuts
    Linux中.a,.la,.o,.so文件的意义和编程实现
    走近GCC 4——GCC 4新特性揭秘(转)
    python 中移去文件的只读属性
    写给金融危机下毕业生的16条忠告
    C++中如何强制inline函数(MSVC, GCC)
    #pragma hdrstop
    富人和穷人的差别(转)
    商业周刊评出08年增长最快的美国科技公司
  • 原文地址:https://www.cnblogs.com/curtisxiao/p/11208210.html
Copyright © 2011-2022 走看看