当前位置: 首页 > news >正文

代码随想录-51-110.平衡二叉树

目录

  • 前言
    • 题目
    • 1.求高度和深度的区别
      • 节点的高度
      • 节点的深度
    • 2. 本题思路分析:
    • 3. 算法实现
    • 4. pop函数的算法复杂度
    • 5. 算法坑点

前言

在本科毕设结束后,我开始刷卡哥的“代码随想录”,每天一节。自己的总结笔记均会放在“算法刷题-代码随想录”该专栏下。
代码随想录此题链接

题目

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
在这里插入图片描述
在这里插入图片描述

1.求高度和深度的区别

节点的高度

求节点的高度指的是该节点到叶子节点的最长简单路径的节点数,
求节点的高度,递归方法时记得使用后序遍历
但是求根节点的高度就是求二叉树的最大深度

节点的深度

求节点的深度指的是根节点到该节点的最长简单路径的节点数
求节点的深度,递归方法时记得使用前序遍历

2. 本题思路分析:

  1. 使用后续遍历,因为求的是节点的高度,求出节点的左右孩子的高度,进行比较,如果差值大于1则代表不是平衡二叉树,向父节点返回-1,告知父节点此树不为平衡二叉树;
  2. 否则返回当前节点的高度,当前节点的高度是,左右子树的最大值+1就是当前节点的高度。

3. 算法实现

  • 代码:
    //递归法(后序遍历)因为是求高度,所以是后序遍历
//求高度,所以使用后序遍历
public boolean isBalanced(TreeNode root) {return getHeightOfTree(root) == -1 ? false :true;
}
//递归三部曲
//1.确定返回值和参数  返回值是深度 参数是以当前节点  如果是平衡二叉树则返回树的高度,否则返回-1
//2.确定返回条件
//3.确定单层递归逻辑
public int getHeightOfTree(TreeNode root){if(root == null){return 0;}int leftHeight = getHeightOfTree(root.left);if(leftHeight == -1){//左子树不为平衡二叉树return -1;}int rightHeight = getHeightOfTree(root.right);if(rightHeight == -1){//右子树不为平衡二叉树return -1;}if(Math.abs(leftHeight - rightHeight) <= 1){//该节点为根节点的树不为平衡二叉树return 1 + Math.max(leftHeight , rightHeight); }else{return -1;}}

4. pop函数的算法复杂度

n为总结点数
时间复杂度:O(log n × log n)
空间复杂度:O(log n)

5. 算法坑点

暂无

相关文章:

代码随想录-51-110.平衡二叉树

目录前言题目1.求高度和深度的区别节点的高度节点的深度2. 本题思路分析&#xff1a;3. 算法实现4. pop函数的算法复杂度5. 算法坑点前言 在本科毕设结束后&#xff0c;我开始刷卡哥的“代码随想录”&#xff0c;每天一节。自己的总结笔记均会放在“算法刷题-代码随想录”该专…...

项目实战典型案例27——对生产环境以及生产数据的敬畏之心

对生产环境以及生产数据的敬畏之心一&#xff1a;背景介绍总结升华一&#xff1a;背景介绍 本篇博客是对项目开发中出现的对生产环境以及生产数据的敬畏之心行的总结并进行的改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家&#xff0c;大家一起共同进步和提高…...

如何查找你的IP地址?通过IP地址能直接定位到你家!

我们ip地址分为A、B、C、D、E共5类&#xff0c;每一类地址范围不同&#xff0c;从A到Eip地址范围依次递减&#xff0c;其中哦&#xff0c;D和E是保留地址&#xff0c;我们用不了。A、B、C3类地址很多都被美国这样的西方国家分走了&#xff0c;而留给我们的就剩有限的地址了&…...

Containers--array类

Array 类 简介 Array 类是一个固定大小的数组&#xff0c;它的大小在编译时就已经确定了。Array 类的大小是固定的&#xff0c;因此它的大小不能改变。 数组是固定大小的序列容器:它们以严格的线性顺序保存特定数量的元素。 在内部&#xff0c;数组除了包含的元素之外不保留…...

LinqConnect兼容性并支持Visual Studio 2022版本

LinqConnect兼容性并支持Visual Studio 2022版本 现在支持Microsoft Visual Studio 2022版本17.5预览版。 添加了Microsoft.NET 7兼容性。 共享代码-共享相同的代码&#xff0c;以便在不同的平台上处理数据。LinqConnect是一种数据库连接解决方案&#xff0c;适用于不同的基于.…...

流量监管与整形

流量监管与整形概览流量监管介绍流量监管令牌桶流量监管的具体实现单桶单速流量监管双桶单速流量监管双桶双速流量监管流量整形介绍GTS&#xff08;Generic Traffic Shaping&#xff09;LR&#xff08;Line Rate&#xff09;流量整形与流量监管的区别概览 流量整形是对报文的速…...

详解init 容器

什么是init容器 init 容器是一种特殊容器&#xff0c;在 Pod 内的应用容器启动之前运行。Init 容器可以包括一些应用镜像中不存在的实用工具和安装脚本。 你可以在 Pod 的规约中与用来描述应用容器的 containers 数组平行的位置指定 Init 容器 每个 Pod 中可以包含多个容器&…...

RequestResponseBodyMethodProcessor

既是一个参数解析器&#xff0c;也是一个返回结果处理器。 1.持有消息转换器的集合 protected final List<HttpMessageConverter<?>> messageConverters;2.作为参数解析器&#xff0c;例如对RequestBody标识的参数进行解析 判断是否支持当前类型的参数 Overrid…...

函数的极限

目录 函数的极限 函数极限的定义&#xff1a; 例题&#xff1a; 左右极限&#xff1a; 自变量趋于无穷大时函数的极限&#xff1a; 例题&#xff1a; 函数极限的性质&#xff1a; 函数极限与数列极限之间的关系&#xff1a; 函数的极限 函数极限的定义&#xff1a; 一句…...

dnf命令使用

1. 简介 DNF是新一代的rpm软件包管理器。他首先出现在 Fedora 18 这个发行版中。而最近&#xff0c;它取代了yum&#xff0c;正式成为 Fedora 22 的包管理器 DNF包管理器克服了YUM包管理器的一些瓶颈&#xff0c;提升了包括用户体验&#xff0c;内存占用&#xff0c;依赖分析…...

CLIP CLAP

文章目录CLIPabstractintroCLAP: LEARNING AUDIO CONCEPTS FROM NATURAL LANGUAGE SUPERVISIONabstractmethodCLIP open AI2021.2代码&预训练模型 abstract 原有的基于有监督数据训练的计算机分类任务&#xff0c;在面对新的分类目标时泛化性和可用性都会变差&#xff1…...

Debezium报错处理系列之五十二:解决Sql Server数据库安装后修改主机名导致sqlserver数据库实例名称没有修改从而无法设置CDC的问题

Debezium报错处理系列之五十二:解决Sql Server数据库安装后修改主机名导致sqlserver数据库实例名称没有修改从而无法设置CDC的问题 一、完整报错二、错误原因三、解决方法Debezium报错处理系列一:The db history topic is missing. Debezium报错处理系列二:Make sure that t…...

scratch老鹰捉小鸡 电子学会图形化编程scratch等级考试二级真题和答案解析2022年12月

目录 scratch老鹰捉小鸡 一、题目要求 1、准备工作 2、功能实现 二、案例分析 <...

概率论小课堂:公理化过程(大数据方法解决问题的理论基础)

文章目录 引言I 初等概率论1.1 19世纪概率论的最大难题1.2 伯努利版本的大数定理1.3 切比雪夫版本的大数定理II 现代概率论(用公理来描述概率论)2.1 柯尔莫哥洛夫2.1 用公理来描述概率论III 最基本的概率论定理3.1 互补事件的概率之和等于13.2 不可能事件的概率为零引言 前苏…...

WOW64 IsWow64Process GetNativeSystemInfoWindows System32 SysWOW64

最近开发有遇到这方面的一些知识点&#xff0c;在此记录下。首先&#xff0c;什么是WOW64&#xff1f;在知道这个之前我觉得需要了解一下&#xff0c;C:\\Windows\\System32和C:\\Winodws\\SysWOW64这两个文件夹的区别&#xff0c;Windows系统最开始的时候出的就是32bit的系统&…...

Spring Boot 3.0系列【10】核心特性篇之应用配置的高阶用法

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot版本3.0.3 源码地址:https://gitee.com/pearl-organization/study-spring-boot3 文章目录 前言1. 命令行2. JSON3. 外部化配置3.1 配置文件加载位置3.2 导入配置3.2 属性占位符4. 加密配置5. 加载YML配置文件6. 配…...

Java int类型数值比较总结

如果是int类型&#xff0c;判断相等的话直接使用 ""来判断&#xff0c;例如&#xff1a; int i 10; int j 10; System.out.print(i j)&#xff1b; 如果是Integer类型&#xff0c;则可以使用equals方法进行相等比较。 int与Integer的基本使用对比 &#xff08…...

Pyspark基础入门5_RDD的持久化方法

Pyspark 注&#xff1a;大家觉得博客好的话&#xff0c;别忘了点赞收藏呀&#xff0c;本人每周都会更新关于人工智能和大数据相关的内容&#xff0c;内容多为原创&#xff0c;Python Java Scala SQL 代码&#xff0c;CV NLP 推荐系统等&#xff0c;Spark Flink Kafka Hbase Hi…...

汽车娱乐系统解决方案

Danlaw在汽车和航空航天行业里是全球知名的技术和服务供应商&#xff0c;致力于提供更加安全与智能的系统。Danlaw以突破性技术和高效开发、动态环境的自适应解决方案而闻名。Danlaw优秀的联网汽车解决方案使之成为全球大型互联设备供应商之一。 一 信息娱乐系统测试 | 风丘科…...

Go语言结构体,这一篇就够了

Go语言结构体&#xff0c;这一篇就够了1.结构体的概念2.结构体的定义3.结构体的实例化4.结构体初始化5.构造函数6.方法和接收者方法接收者7.嵌套结构体8.结构体的“继承”9.结构体与JSON序列化10.结构体标签&#xff08;Tag&#xff09;Go语言中没有“类”的概念&#xff0c;也…...

【python】各种排序算法代码大集合

超级好用的口诀: 时间复杂度:快些以nlogn的速度归队。 稳定性:心情不稳定,快些选一堆好友来聊天吧。 直接插容易插变O(N),起泡起得好变O(N).(初始序列已经有序) 插入排序法在近乎有序的情况下,效率特别高,通过插入排序,可以引申出希尔排序 归并排序:左半部分排好序…...

K8S Pod健康检查

因为 k8s 中采用大量的异步机制、以及多种对象关系设计上的解耦&#xff0c;当应用实例数 增加/删除、或者应用版本发生变化触发滚动升级时&#xff0c;系统并不能保证应用相关的 service、ingress 配置总是及时能完成刷新。在一些情况下&#xff0c;往往只是新的 Pod 完成自身…...

NFS服务器与CGI程序详解

目录 NFS 服务器 一&#xff0c;NFS 服务器简介 二&#xff0c;NFS的使用 三&#xff0c;客户端使用 autofs 自动挂载 1&#xff0c;autofs产生的原因 四&#xff0c;autofs的安装与配置文件 五&#xff0c;autofs的使用 www服务器---cgi程序 CGI程序的应用 NFS 服务器 一&a…...

可视化项目管理,控制项目进度,项目经理需要做好以下工作

对于项目的管理者来说&#xff0c;项目信息透明&#xff0c;能够更容易让管理者发现项目中的问题&#xff0c;及时找到问题的原因和相关任务的责任人。 当项目信息能相对精准地呈现给管理者时&#xff0c;也能促进项目成员也能更加认真负责的完成任务&#xff0c;不会找借口推…...

海康工业相机使用教程

工业相机使用一、硬件连接1、准备材料2、相机供电&#xff08;1&#xff09;区分电源适配器正负极&#xff08;2&#xff09;连接相机电源线缆&#xff08;3&#xff09;连接完成后&#xff0c;相机蓝色灯常亮则成功3、软件连接&#xff08;1&#xff09;MVS客户端下载地址&…...

java开发手册之安全规约

安全规约隶属于用户个人的页面或者功能必须进行权限控制校验。 说明&#xff1a;防止没有做水平权限校验就可随意访问、修改、删除别人的数据&#xff0c;比如查看他人的私信内容、修改他人的订单。 用户敏感数据禁止直接展示&#xff0c;必须对展示数据进行脱敏。 说明&#x…...

python模块引入问题和解决方案_真方案不骗人

1.pycharm运行python脚本的过程 使用pycharm等编辑器run/debug运行python脚本时&#xff0c;编辑器会通过本地python命令全路径执行脚本&#xff0c;例如 D:\DevelopTools\Python\python.exe D:/Codes/一长串路径/bbss_nature_python/demo/test_no_param_in.py 并且会在pyth…...

Read book Netty in action(Chapter X)--Unit Testing

序言 ChannelHandler 是Netty 应用程序的关键元素&#xff0c;所以彻底地测试它们应该是你的开发过程的一个标准部分。最佳实践要求你的测试不仅要能够证明你的实现是正确的&#xff0c;而且还要能够很容易地隔离那些因修改代码而突然出现的问题。这种类型的测试叫作单元测试。…...

Appium+Python连接真机、跳过登录页、Unexpected error while obtaining UI hierarchy问题

Appium连接真机 使用数据线连接电脑&#xff0c;然后选择文件传输方式 打开手机设置拉至底部&#xff0c;点击关于手机&#xff0c;连续点击7次版本号打开开发者模式 点击设置中的系统与更新&#xff0c;找到开发者选项----> 打开USB调试即可 在终端中输入adb devices确定…...

ES6模块化

目录 一、什么是 ES6 模块化规范 二、ES6 模块化的基本语法 2.1默认导出 2.1默认导入 2.1 注意事项 2.2按需导出 2.2按需导入 2.2按需导出与按需导入的注意事项 2.3直接导入并执行模块中的代码 一、什么是 ES6 模块化规范 ES6 模块化规范是浏览器端与服务器端通用的…...

太原建站培训/网站监测

1&#xff09;Boosting思想和基本概念 2&#xff09;AdaBoost算法 3&#xff09;AdaBoost算法举例 4&#xff09;AdaBoost算法的解释——前向分步算法 5&#xff09;提升树算法 6&#xff09;提升树算法举例 1&#xff09;Boosting思想和基本概念 下面的概念前面都讲过&…...

适合vue做的网站类型/网站排名快速提升

2019独角兽企业重金招聘Python工程师标准>>> 如果你的服务器每天需要处理大量数据&#xff0c;比如每天千万级&#xff0c;那么强烈建议你修改你的代码&#xff0c;可以把单条的insert改成批量的提交 &#xff0c;update也是同理&#xff0c;这对于数据录入和修改的…...

做属于公司的网站有什么好处/爱廷玖达泊西汀

我相信大家在用nohup 后台起线程的时候都会遇到这样一个问题&#xff0c;随着nohup运行次数的增加&#xff0c;会导致本机上有许多nohup.out 文件。 这些nohup.out 文件分散在系统的各个位置&#xff0c;会导致占用许多的空间&#xff0c;这里我写了一个脚本用来删除本机上的所…...

建行手机银行下载app最新版/网络优化器下载

Verilog时序逻辑硬件建模设计&#xff08;五&#xff09;异步计数器&总结-Asynchronous Counter Design没有任何寄存器逻辑&#xff0c;RTL设计是不完整的。RTL是寄存器传输级或逻辑&#xff0c;用于描述依赖于当前输入和过去输出的数字逻辑。在异步计数器中&#xff0c;时…...

做网站 怎么赚钱吗/爱战网关键词挖掘查询工具

〇、摘要 munin是用于Linux系统&#xff08;也可以监控windows系统&#xff09;的监控软件。munin除了可以监控系统的各项数值之外&#xff0c;最大的好处是可以自己编写插件自定义监控需要的数值。整个系统的架构简单明了&#xff0c;操作方便。如果是使用Debian或者Ubuntu安装…...

推广网站排名/抖音seo关键词优化排名

Groovy中对Json的操作 我们以一个List 为例&#xff0c;把它转成json&#xff0c;在转为List 实体类&#xff1a; class Person {String nameint agedef eat() {println "${name} 在吃饭"}Overridepublic String toString() {return "Person{" "na…...