day16|二叉树的属性

news2024/11/24 20:27:49

在这里插入图片描述
相关题目
● 104.二叉树的最大深度 559.n叉树的最大深度
● 111.二叉树的最小深度
● 222.完全二叉树的节点个数

二叉树的深度与高度

在这里插入图片描述
如图,
二叉树的深度表示:任意一个叶子节点到根节点的距离,是从上往下计数的,因此使用前序遍历得到任意一个叶子节点的深度
二叉树的高度表示:根节点到叶子节点的距离,是从下往上计数的,因此使用后序遍历得到跟根节点到叶子节点的高度
而二叉树的最大深度即就是根节点的高度(慢慢品),我的理解:二叉树的高度表示根节点到最后一层叶子节点的距离,刚好等于二叉树的最大深度,所以卡哥才这样总结的

二叉树的最大深度

由于根节点的高度就是这棵二叉树的最大深度,因此我们使用后序遍历求解
递归实现:递归三部曲

  1. 确定入参:二叉树的根节点
  2. 结束条件:遍历节点为null时停止
  3. 单次循环过程:输出左子树的高度和右子树的高度,取最大值
    实现过程:
public int maxDepth(Node root) {
        if(root == null){
            return 0;
        }
        int deep = 0;
        for (Node chrild:root.children) {
            int curDeep = maxDepth(chrild);
            deep = Math.max(deep,curDeep);
        }
        return deep+1;
    }

n叉树的最大深度

实现过程:

 public int maxDepth(Node root) {
        if(root == null){
            return 0;
        }
        int deep = 0;
        for (Node chrild:root.children) {
            int curDeep = maxDepth(chrild);
            deep = Math.max(deep,curDeep);
        }
        return deep+1;
    }

二叉树的最小深度

这个玩意不是很好理解
得看视频回顾回顾:
先上代码

public int minDepth(TreeNode root) {
        //后序,求高度
        if (root == null) {
            return 0;
        }
        int leftDeep = minDepth(root.left);
        int rightDeep = minDepth(root.right);
        if(root.left == null && root.right!=null){
            return rightDeep+1;
        }
        if(root.left != null && root.right==null){
            return leftDeep+1;
        }
        return Math.min(leftDeep,rightDeep)+1;
    }

满二叉树的应用

完全二叉树的节点个数

见下篇文章讲解

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

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

相关文章

忍の摸头之术游戏娱乐源码

本资源提供给大家学习及参考研究借鉴美工之用,请勿用于商业和非法用途,无任何技术支持! 忍の摸头之术游戏娱乐源码,抖音上面非常火的摸头杀画面,看得我眼花缭乱,源码拿去玩吧; 目录说明 忍の摸头之术:域…

[牛客网]——C语言刷题day5

答案:D 解析:因为两个指针都指向的字符串常量,不能被重新赋值,*p*q是错误的 在C语言中,赋值语句的返回值都是所赋的值,所以才会有连续赋值的语句,例如ab10,因此,这里的i…

TypeScript-初识

TypeScript 是具有类型语法的JavaScript&#xff0c;是一门强类型的编程语言 变量不能做随意类型赋值 好处&#xff1a; 1️⃣ 静态类型检查&#xff0c;提前发现代码错误 function arrToStr(arr: Array<string>){return arr.join() } arrToStr(123) // 类型“stri…

汇聚荣科技有限公司优点有哪些?

在当今快速发展的科技时代&#xff0c;企业之间的竞争愈发激烈。作为一家专注于科技创新与研发的公司&#xff0c;汇聚荣科技有限公司凭借其卓越的技术实力和创新能力&#xff0c;在业界树立了良好的口碑。那么&#xff0c;汇聚荣科技有限公司究竟有哪些优点呢?接下来&#xf…

基于CentOS7的openGauss5.x极简版安装过程分享

背景&#xff1a;国产信创适配大环境下&#xff0c;安装并体验一下&#xff0c;了解一些数据库适配情况 约束&#xff1a;CentOS Linux release 7.8.2003 (Core) 范围&#xff1a;仅记录上述平台下的简单安装体验过程 目的&#xff1a;节约大家初次体验的时间&#xff0c;为社会…

Python协程的作用

过分揣测别人的想法&#xff0c;就会失去自己的立场。大家好&#xff0c;当代软件开发领域中&#xff0c;异步编程已成为一种不可或缺的技术&#xff0c;用于处理大规模数据处理、高并发网络请求、实时通信等应用场景。而Python协程&#xff08;Coroutine&#xff09;作为一种高…

string类的各个功能函数的底层实现

我们在上一篇文章中详细地讲解了string类的各个常用功能成员函数的讲解&#xff0c;本文我们将对上文进行一个小收尾&#xff0c;然后开始实现string类的底层。 一、上一篇的收尾 1.find函数&#xff1a;顾名思义&#xff0c;它的功能是在字符串中找到目标字符并返回它的位置…

骨传导耳机哪个品牌好?避坑必读精析5大热门款式推荐!

作为一名有着多年工作经验的数码测评师&#xff0c;我发现市场上有许多骨传导耳机品牌都声称自己具有出色的音质和佩戴舒适度。但是&#xff0c;从用户的实际反馈来看&#xff0c;大部分产品都或多或少存在一些问题&#xff0c;如音质失真、佩戴不稳定、耳朵不适等&#xff0c;…

【Pytorch】16.使用ImageFolder加载自定义MNIST数据集训练手写数字识别网络(包含数据集下载)

数据集下载 MINST_PNG_Training在github的项目目录中的datasets中有MNIST的png格式数据集的压缩包 用于训练的神经网络模型 自定义数据集训练 在前文【Pytorch】13.搭建完整的CIFAR10模型我们已经知道了基本搭建神经网络的框架了&#xff0c;但是其中的数据集使用的torchvision…

vue实现加入购物车动效

实现 实现逻辑&#xff1a; 点击添加购物车按钮时&#xff0c;获取当前点击位置event的clientX 、clientY&#xff1b;动态创建移动的小球&#xff0c;动态计算小球需要移动到的位置&#xff08;通过ref 的getBoundingClientRect获取统计元素按钮位置&#xff09;&#xff1b…

JS 网页密码框验证信息

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>/* 当没有密码…

【错误解决】使用HuggingFaceInstructEmbeddings时的一个错误

起因&#xff1a;使用huggingface构建一个问答程序时出现的问题。 错误内容&#xff1a; 分析&#xff1a; 查看代码发现&#xff0c;HuggingFaceInstructEmbeddings和sentence-transformers模块版本不兼容导致。 可以明显看到方法参数不同。 解决&#xff1a; 安装sentenc…

MySQL主从复制(docker搭建)

文章目录 1.MySQL主从复制配置1.主服务器配置1.拉取mysql5.7的镜像2.启动一个主mysql&#xff0c;进行端口映射和目录挂载3.进入/mysql5.7/mysql-master/conf中创建my.cnf并写入主mysql配置1.进入目录2.执行命令写入配置 4.重启mysql容器&#xff0c;使配置生效5.进入主mysql&a…

c#自动生成缺陷图像-添加新功能(可从xml直接提取目标数据,然后进行数据离线增强)--20240524

在进行深度学习时,数据集十分重要,尤其是负样本数据。 故设计该软件进行深度学习数据预处理,最大可能性获取较多的模拟工业现场负样本数据集。 该软件基于VS2015、.NETFrameWork4.7.2、OpenCvSharp1.0.0.0、netstandard2.0.0.0、SunnyUI3.2.9.0、SunnyUI.Common3.2.9.0及Ope…

Android studio的Gradle出问题

Gradle sync failed: Plugin [id: com.android.application, version: 7.1.1, apply: false] was not found in any of the following sources: 在src里面的build.gradle中 plugins { id ‘com.android.application’ } 的上面加上 buildscript {repositories {jcenter()}depen…

数字驱动,教育先行——低代码揭秘教育机构管理数字化转型

数字化时代为教育带来了许多变革和挑战&#xff0c;同时也为教育创新提供了无限可能。数字化转型可以帮助教育机构应对这些变革和挑战&#xff0c;提高教育效率和质量&#xff0c;满足学生个性化需求&#xff0c;优化教育管理和服务&#xff0c;并提高教育机构的竞争力。 并且…

【译】MySQL复制入门: 探索不同类型的MySQL复制解决方案

原文地址&#xff1a;An Introduction to MySQL Replication: Exploring Different Types of MySQL Replication Solutions 在这篇博文中&#xff0c;我将深入介绍 MySQL 复制&#xff0c;回答它是什么、如何工作、它的优势和挑战&#xff0c;并回顾作为 MySQL 环境&#xff0…

131. 面试中关于架构设计都需要了解哪些内容?

文章目录 一、社区系统架构组件概览1. 系统拆分2. CDN、Nginx静态缓存、JVM本地缓存3. Redis缓存4. MQ5. 分库分表6. 读写分离7. ElasticSearch 二、商城系统-亿级商品如何存储三、对账系统-分布式事务一致性四、统计系统-海量计数六、系统设计 - 微软1、需求收集2、顶层设计3、…

开源大模型与闭源大模型:谁主沉浮?

目录 &#x1f349;引言 &#x1f349;数据隐私 &#x1f348;开源大模型的优势与挑战 &#x1f34d;优势&#xff1a; &#x1f34d;挑战&#xff1a; &#x1f348;闭源大模型的优势与挑战 &#x1f34d;优势&#xff1a; &#x1f34d;挑战&#xff1a; &#x1f34…

【设计模式深度剖析】【2】【创建型】【工厂方法模式】

&#x1f448;️上一篇:单例模式 | 下一篇:抽象工厂模式&#x1f449;️ 目录 工厂方法模式概览工厂方法模式的定义英文原话直译 工厂方法模式的4个角色抽象工厂&#xff08;Creator&#xff09;角色具体工厂&#xff08;Concrete Creator&#xff09;角色抽象产品&#x…