首页 > 其他分享 >Day18 | 513. 找树左下角的值 | 112.路径总和、113.路径总和ii

Day18 | 513. 找树左下角的值 | 112.路径总和、113.路径总和ii

时间:2024-06-13 22:22:30浏览次数:27  
标签:None right val self 路径 左下角 left root 总和

513. 找树左下角的值

本题递归偏难,反而迭代简单属于模板题, 两种方法掌握一下

题目链接/文章讲解/视频讲解:https://programmercarl.com/0513.找树左下角的值.html

思考

层序遍历秒了

# 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 findBottomLeftValue(self, root: Optional[TreeNode]) -> int:
        queue = deque()
        queue.append(root)
        res = []
        while queue:
            level = []
            for i in range(len(queue)):
                node = queue.popleft()
                level.append(node.val)
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
            res.append(level)
        return res[-1][0]

112.路径总和、113.路径总和ii

本题 又一次涉及到回溯的过程,而且回溯的过程隐藏的还挺深,建议先看视频来理解

  1. 路径总和,和 113. 路径总和ii 一起做了。 优先掌握递归法。

题目链接/文章讲解/视频讲解:https://programmercarl.com/0112.路径总和.html

112.路径总和
隐藏的回溯方法,sum每次提前减掉后传到下一步的。

# 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 hasPathSum(self, root: Optional[TreeNode], targetSum: int) -> bool:
        if root is None:
            return False
        if root.left is None and root.right is None:
            if root.val == targetSum:
                return True
            else:
                return False            
        elif root.left and not root.right:
            return self.hasPathSum(root.left,targetSum-root.val)
        elif not root.left and root.right:
            return self.hasPathSum(root.right,targetSum-root.val)
        else:
            return self.hasPathSum(root.right,targetSum-root.val) or self.hasPathSum(root.left,targetSum-root.val) 

113.路径总和ii

# 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 __init__(self):
        self.sum = 0
    def pathSum(self, root: Optional[TreeNode], targetSum: int) -> List[List[int]]:
        path = []
        res = []
        def backtracking(root,targetSum):
            if root is None:
                return
            path.append(root.val)
            if root.left is None and root.right is None:
                if self.sum + root.val == targetSum:
                    res.append(path[:])
                return 
            if root.left:
                self.sum+=root.val
                backtracking(root.left,targetSum)
                self.sum-=root.val
                path.pop()
            if root.right:
                self.sum+=root.val
                backtracking(root.right,targetSum)
                self.sum-=root.val
                path.pop()
        backtracking(root,targetSum)
        return res

从中序与后序遍历序列构造二叉树

本题算是比较难的二叉树题目了,大家先看视频来理解。

106.从中序与后序遍历序列构造二叉树,105.从前序与中序遍历序列构造二叉树 一起做,思路一样的

题目链接/文章讲解/视频讲解:https://programmercarl.com/0106.从中序与后序遍历序列构造二叉树.html

标签:None,right,val,self,路径,左下角,left,root,总和
From: https://www.cnblogs.com/forrestr/p/18246879

相关文章

  • jupyter中使用conda虚拟环境、更改jupyter的默认打开路径
    目录一、jupyter中使用conda虚拟环境二、更改jupyter的默认打开路径一、jupyter中使用conda虚拟环境 1.创建名为lwx,python版本为3.9的虚拟环境(环境名称和python版本可自定义)#condacreate-n虚拟环境名字python=版本condacreate-nlwxpython=3.92.输入conda......
  • delphi Image32 路径
    用Image32的理由之一,也是路径这块做得比delphi(FMX)自带的要好,skia中支持svg,但对路径处理功能不够强大。VCL只能使用第三方库。VCL如果要支持SVG,只有Image32好点,SVGIconImageList 第三方库也使用Image32.  unituFrmPaths;interfaceusesWinapi.Windows,Winapi.M......
  • 多源最短路径算法 -- 弗洛伊德(Floyd)算法
    1. 简介        Floyd算法,全名为Floyd-Warshall算法,亦称弗洛伊德算法或佛洛依德算法,是一种用于寻找给定加权图中所有顶点对之间的最短路径的算法。这种算法以1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德的名字命名。2.核心思想    ......
  • 【动态规划】| 路径问题之不同路径II 力扣63
    ......
  • 虚拟机开机或重启后自动执行绝对路径下的可执行文件方法
    在虚拟机中打开路径/etc/systemd/system/在Linux系统中,使用service(或systemctl,对于使用systemd的系统)来在开机后自动执行某个可执行文件,通常涉及创建一个服务单元文件(serviceunitfile)。以下是一些常见的方法,用于设置开机自启服务来执行可执行文件:1.使用systemd(大多数现代......
  • 【CMake系列】06-项目结构与输出路径管理
    为了对大型项目实现更好的管理【模块化协作开发等等】,cmake提供了很多指令,可以对项目的结构进行调整、管理,便于项目的合理规划。本文我们要学习的就是项目结构的设置,以及构建程序等输出路径的设置本专栏的实践代码全部放在github上,欢迎star!!!如有问题,欢迎留言、或加群......
  • 路径总和-力扣
    本题想到的解法是对二叉树进行深度搜索,并记录路径和,当节点为叶子节点时,将路径和与目标值进行判断,如果相等则返回true,否则返回false,最后返回左右子树或的值即可,因为只需有一条满足条件就可以。/***Definitionforabinarytreenode.*structTreeNode{*intv......
  • 卫星通讯传输技术助力电力运维巡检效率提升:EasyCVR实现远程监控与管理的新路径
    随着科技的快速发展,视频监控技术已广泛应用于各个领域。而卫星通讯作为一种高效、稳定的通信方式,为视频监控系统的远程传输提供了有力支持。一、方案背景随着电力行业的快速发展,电力运维巡检工作变得愈发重要。传统的巡检方式往往受到地域、环境等因素的限制,难以实现对电力设备......
  • 前端使用 Konva 实现可视化设计器(14)- 折线 - 最优路径应用【代码篇】
    话接上回《前端使用Konva实现可视化设计器(13)-折线-最优路径应用【思路篇】》,这一章继续说说相关的代码如何构思的,如何一步步构建数据模型可供AStar算法进行路径规划,最终画出节点之间的连接折线。请大家动动小手,给我一个免费的Star吧~大家如果发现了Bug,欢迎来提Issue......
  • 二叉树的所有路径-力扣
    这道题目需要返回给定二叉树所有从根节点到叶子节点的路径,那么对二叉树进行深度优先搜索,遇到节点就将其加到路径中,如果这个节点的左右子节点都为空,那么它就是一个叶子节点,将这条路径加入到结果数组中。这里将int转换为string使用了to_string()函数。/***Definition......