代码随香录day16

news2024/12/22 20:29:19

104. 二叉树的最大深度

思路:这道题推荐用层序遍历递归的方式

递归三要素:

                终止条件:当当前node为空时候 

                单层递归逻辑:分别向node的左子树和右子树进行递归,定义left和right接受返回值

                递归参数:root

代码:

def maxDepth(self, root: Optional[TreeNode]) -> int:
        return self.count_depth(root)



    def count_depth(self,node):
        if not node:
            return 0 
        left =self.count_depth(node.left)
        right = self.count_depth(node.right)
        return max(left,right)+1

111. 二叉树的最小深度

 

 思路:这道题依旧是是用层序遍历的方式,不得不说层序遍历真的很好用!!!

不过这里会多几个判断条件,定义left&right去接受左子树和右子树的高度之后。

判断当前root的左右子树是否为空

if node.left==None and node.right!=None:
            return 1+right
        elif node.left==None and node.right==None:
            return 1 
        elif node.left!=None and node.right==None:
            return 1+ left
        else:
            return min(left,right)+1

这也是这道题的核心部分。

递归三要素:

                终止条件:当node为空时返回0 

                递归参数:root就足够了

                单层递归:就是当前node的左孩子和右孩子

代码:

         

def minDepth(self, root: Optional[TreeNode]) -> int:
        return self.depth(root)

    def depth(self,node):
        if not node:
            return 0 
        left = self.depth(node.left)
        right = self.depth(node.right)
        if node.left==None and node.right!=None:
            return 1+right
        elif node.left==None and node.right==None:
            return 1 
        elif node.left!=None and node.right==None:
            return 1+ left
        else:
            return min(left,right)+1

222. 完全二叉树的节点个数

 

思路:      

  1. 确定递归函数的参数和返回值:参数就是传入树的根节点,返回就返回以该节点为根节点二叉树的节点数量,所以返回值为int类型。
  2. 确定终止条件:如果为空节点的话,就返回0,表示节点数为0。
  3. 确定单层递归的逻辑:先求它的左子树的节点数量,再求右子树的节点数量,最后取总和再加一 (加1是因为算上当前中间节点)就是目前节点为根节点的节点数量
  4. 代码:
    def countNodes(self, root: Optional[TreeNode]) -> int:
            return self.count(root)
    
    
        def count(self,node):
            if not node:
                return 0 
            left = self.count(node.left)
            right = self.count(node.right)
            return left+right+1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/748852.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

wincc与300以太网通讯教程在建材行业矿粉磨生产自动化控制系统中应用

内容摘要 上位机与S7-300PLC通信采用以太网通信,通讯模块采用捷米特ETH-S7300-JM01以太网通讯模块,捷米特ETH-S7300-JM01通讯模块直接插到CPU315-2DP的DP口上。 项目介绍 立磨PLC控制系统: 立磨是一种理想的大型粉磨设备,广泛应…

最详细的下载安装PicGo图床配合Typora使用

1.node.js下载安装1.2 检验安装成功 2. PicGo下载安装3. 配置Gitee【配合PicGo使用】3.1 获取PicGo的token 4. 配置PicGo4.1 下载插件4.2 配置图床[Gitee]4.3 配置Typora 5. 上传图片到Gitee【重要】6.解决配置错误 1.node.js下载安装 【node.js下载链接】点击跳转页面&#x…

安卓JNI从0到1入门教程(三)

前面两篇博客介绍了jni相关内容,以及怎么在Android中简单使用,demo比较简单。这次来讲讲复杂一点的java和C/C的互相调用。 下面我们将要实现的功能是将Java对象传递给C,然后用C的对象接收值,最后把C对象的值回传给Java层。 一、…

HP Laser 136nw打印机与win10实现Wifi直连

HP Laser 136nw打印机与win10实现Wifi直连 HP Laser 136nw打印机设置HP Smart HP Laser 136nw打印机设置 打开打印机WIFI开关,使其他设备可以搜索到 查看打印机设备名称,用于设备搜索 查看打印机WIFI密钥,用于windows与打印机直连 根据…

深度学习开源框架

文章目录 1. 深度学习框架1.1 概述1.2 深度学习框架—关于组件1.2.1 组件—张量1.2.2 基于张量的各种操作1.2.3 计算图1.2.4 自动微分工具1.2.5 拓展包 2. 主流深度学习框架2.1 市面上主流框架2.2 本土深度学习框架2.3 深度学习框架的标准化--ONNX 3. Tensorflow3.1 Tensorflow…

【读书笔记】《认知驱动》- 周岭 - 2021年出版

不停的阅读,然后形成自己的知识体系。 2023.07. 读 读完毛姆的《月亮与六便士》,本来打算阅读《人类群星闪耀时》。尝试阅读了一下,有点太累了,于是换周岭老师的另一本《认知驱动》来读吧,这本书稍显轻快好理解一些&a…

JavaScript的数据类型和数据类型的检测

目录 数据类型 数据类型的检测 🎁更多干货 完整版文档下载方式: 数据类型 JavaScript的基础数据类型有,NaN string undefined Null Boolen Symbol   Bigint 这些都是基础数据类型,还有一个引用数据类型&…

2. CSS3的新特性

2.1CSS3的现状 ●新增的CSS3特性有兼容性问题, ie9才支持 ●移动端支持优于PC端 ●不断改进中 ●应用相对广泛 ●现阶段主要学习: 新增选择器和盒子模型以及其他特性 CSS3给我们新增了选择器,可以更加便捷,更加自由的选择目标元素: 1.属性选择器 2.结构伪类选择器…

中介者(Mediator)模式

目录 动机使用场景参与者协作效果实现相关模式应用和思考 中介者(Mediator)是对象行为模式,用一个中介对象来封装一系列对象的交互。中介者使各对象不需要显式的相互应用,从而使其耦合松散,而且可以独立的改变他们之间的交互 动机 面向对象设…

光学卷积处理芯片---自动驾驶高性能运算平台的福音?

摘要: 本文提到的在低损耗氮化硅平台上制造的紧凑片上光学卷积处理单元,可以展示出其大规模集成的能力。 深度学习的处理模式是我们在在自动驾驶环境目标分类、识别、跟踪等场合下不可或缺的重要一环。随着自动驾驶技术的不断演进,要求处理的…

怎么学习核心Java相关的技术和知识? - 易智编译EaseEditing

学习核心Java相关的技术和知识可以按照以下步骤进行: 学习Java基础: 从Java语言的基础知识开始学习,了解语法、数据类型、运算符、控制流程等基本概念。 可以通过在线教程、书籍或学习资源进行自学,如Oracle官方的Java教程、Ja…

funbox2靶场笔记

信息收集开放21,22,80端口 21端口存在ftp匿名访问,下载压缩包,有密码,直接破解 ftp简单命令 ftp ip anonymous#匿名用户 ls cd pwd lpwd get pwd mget 使用工具fcrackzip fcrackzip -D -u -p rockyou.txt tom.zip -D 使用字典 rockyou字…

反射的基础部分知识

反射的基础——Class Java当中的类用来表示具有相同属性和方法的对象的集合,是抽象的概念。对象是类创建的,同一个类的不同对象具有不同的属性值。 Java当中定义的所有类都属于同一类事物,可以Class来表示。 类型 访问方法 返回值类型 说…

MySQL数据库管理(二)

文章目录 一.表结构(增加字段)1.创建表结构2.复制数据表2.1 复制格式2.2 克隆表 3.清空表,删除表内的所有数据4.创建临时表 二.MySQL中6种常见的约束1.外键的定义2.创建外键约束作用3.创建主表blue4.创建从表Icecream5.为主表blue添加一个主键约束。主键名建议以&qu…

JAVA - 内存管理

目录 内存管理是什么 JVM内存区域组成 程序计数器PC java虚拟机栈 本地方法栈 JAVA堆 方法区 常量池 运行时常量池 内存管理是什么 Java的内存管理就是对象的分配和释放问题 分配 :内存的分配由程序完成的,程序员通过关键字new 为每个对象申请…

mysql视图的简单应用

1、创建一视图 stu_info,查询全体学生的姓名,性别,课程名,成绩。 create view stu_info(姓名,性别,课程名,成绩) as select Sname,Ssex,Cname,Score from Course,SC,Student where Student.Sno SC.Sno and SC.Cno Course.Cno;去查看视图 …

混合云监控

混合云基础架构的增长是由增强的灵活性、成本优化机会以及对敏捷 DevOps 文化的支持等优势推动的。另一方面,在混合云环境中很难实现可见性、问责制和控制,这被证明是混合云成功的障碍。尽管公共云提供商提供了用于监控服务可用性的控制台,但…

将媒体公司资产迁移到 Amazon S3 的技术方案

随着媒体公司的发展,他们在仓库中积累了大量的旧磁带和未数字化的视频。这些资产可能很有价值,但以目前的形式很难访问和货币化。此外,将这些资产存储在仓库中既有风险又昂贵。 媒体企业可以通过将其资产迁移到云存储来解决这些问题&#xf…

MySQL练习题(5)

创建表并插入数据 1、创建一个可以统计表格内记录条数的存储函数 ,函数名为count_sch() select count_sch() 2、创建一个存储过程avg_sai,有3个参数,分别是deptno,job,接收平均工资, 功能查询emp表dept为30…

开放式蓝牙耳机测评!2023年值得入手的开放式蓝牙耳机都在这里!索尼、南卡、韶音、飞利浦等等品牌,看看有没有适合你的款式!

这可能是站内最详细的开放式蓝牙耳机选购攻略!想入手开放式蓝牙耳机必看! 在这个人人手机不离手的快节奏时代,蓝牙耳机自然是越多越多人的选择,而随着耳机种类的进化代送,开放式蓝牙耳机,也随之被大众熟知…