LeetCode刷题之HOT100之二叉树的直径

2024/5/25 阴天。这几天睡眠质量都非常好,一切似乎都在慢慢上升。先把题做了

1、题目描述

在这里插入图片描述

2、逻辑分析

题目要求就是给一个二叉树,求出两个节点之间的最大长度即为二叉树的直径。怎么做呢?我想不出来。看一下题解吧。题解给出的解法是深度优先搜索。我们来看看大致思路:

比如我们示例1给出的二叉树:我们知道[4,2,1,3]和[5,2,1,3]是最大长度即直径。那么我们可以将根节作为起点,搜索左边的儿子和右边的儿子,左边长度记为L,右边长度记为R。左边可以搜出[4,2]和[5,2],右边可以搜出[3]。那么最大长度为L + R + 1,即为max,而最终的直径为max - 1。递归找出最大的那个即为最终结果,下面看代码

3、代码演示

// 用于记录二叉树的直径int maxd ;public int diameterOfBinaryTree(TreeNode root) {// 初始化 maxd 为 1,因为至少有一个节点maxd = 1;// 调用 depth 函数计算树的深度,同时更新 maxd 的值depth(root);// 返回最大直径,即 maxd - 1return maxd - 1;}public int depth(TreeNode root ){// 如果当前节点为空,返回 0if(root == null){return 0;}// 递归计算左子树的深度int L = depth(root.left);// 递归计算右子树的深度int R = depth(root.right);// 更新 maxd 的值,取当前最大值和 L + R + 1 中的最大值maxd = Math.max(maxd, L + R + 1);// 返回当前节点的深度,即左右子树深度的最大值加 1return Math.max(L , R ) + 1;}

在IDE中运行一遍就顺畅了许多,递归这一思想真的很重要。时间复杂度:O(n),空间复杂度:O(height),height为树的高度。

ok,做完啦,再见!

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

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

相关文章

Swagger2 和 Swagger3 的不同

Swagger2 和 Swagger3 的不同 SpringBoot 整合 Swagger3 和 Swagger2 的主要区别如下&#xff1a; 区别一&#xff1a;引入不同的依赖 如果使用的是 Swagger 3 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter<…

Linux——Docker容器虚拟化平台

安装docker 安装 Docker | Docker 从入门到实践https://vuepress.mirror.docker-practice.com/install/ 不需要设置防火墙 docker命令说明 docker images #查看所有本地主机的镜像 docker search 镜像名 #搜索镜像 docker pull 镜像名 [标签] #下载镜像&…

学习java第八十天

ApplicationContext有哪些常见实现&#xff1f; FileSystemXmlApplicationContext容器从XML文件加载bean的定义。XML bean配置文件的完整路径必须提供给构造函数。 ClassPathXmlApplicationContext容器也从XML文件加载bean的定义。这里&#xff0c;你需要正确设置classpath因…

mybatis-plus 优雅的写service接口中方法(3)

多表联查 上文讲过了自定义sql &#xff0c;和wrapper的使用&#xff0c;但是我们可以发现 我们查询的都是数据库中的一张表&#xff0c;那么怎么进行多表联查呢&#xff0c;当然也是用自定义sql来进行实现 比如说 查询 id 为 1 2 4 的用户 并且 地址在北京 的 用户名称 普…

Elasticsearch不删原有jdk8导致的系列安装和启动问题

以前在空机器直接装elasticsearch&#xff0c;没有遇到什么问题。今天在现有JDK上安装&#xff0c;遇到的问题记录一下&#xff1a; 1. JDK的环境变量配置与我原有的不一致报如下错误&#xff1a; [estestZK-DES-I root]$ /usr/elasticsearch/bin/elasticsearch could not fi…

python-数据分析与可视化基础

1、data1.csv中的B、C、D和E列数据分别是日期、权重、A企业的销售额、B企业的销售额。读取C、D、E列数据,并统计E列数据的算术平均数、加权平均值(权值为C列数据)、方差、中位数、最小值、最大值。并绘制E列数据的直方图。 &#xff08;1&#xff09;源代码&#xff1a; impo…

JavaScript异步编程:理解和使用Promise、Async/Await

JavaScript是一种单线程语言&#xff0c;这意味着它一次只能执行一个任务。然而&#xff0c;在Web开发中&#xff0c;我们经常需要处理异步操作&#xff0c;例如网络请求、定时器、事件监听等。JavaScript提供了多种方式来处理异步编程&#xff0c;包括回调函数、Promise、Asyn…

什么生信流程语言让你极度爽?

生信流程搭建有多难&#xff1f;行业为解决这一问题提出了各种各样的配方&#xff0c;有你熟悉的吗&#xff1f; 一、困境 - 乱 无数机构投入大量人力物力&#xff0c;以期获得一条条可用的生信流程。而有些流程&#xff0c;由于种种原因&#xff0c;存在着巨大的缺陷&#xf…

安全风险 - 切换后台时背景模糊处理

因为安全风险中提到当app处于后台卡片状态时&#xff0c;显示的卡片页面应该为模糊效果&#xff0c;否则容易泄露用户隐私&#xff0c;尤其当前页涉及个人信息、资产信息等&#xff0c;都会造成信息泄露&#xff01;基于这种场景&#xff0c;我研究了下这种业务下的模糊效果 找…

普通函数的参数中的auto

2.1 普通函数的参数中的auto 从c14起&#xff0c;lambda可以使用auto占位符声明或者定义参数: auto printColl [] (const auto& coll) // generic lambda{ for (const auto& elem : coll) {std::cout << elem << \n;}} 只要支持Lambda 内部的操作&…

【OS】AUTOSAR Os是如何启动第一个Task的

目录 前言 正文 1.总体概览及背景介绍 1.1. Os默认的Hook配置 1.2 用户Task的配置

Golang创建文件夹

方法 package zdpgo_fileimport ("os" )// AddDir 创建文件夹 func AddDir(dir string) error {if !IsExist(dir) {return os.MkdirAll(dir, os.ModePerm)}return nil }测试 package zdpgo_fileimport "testing"func TestAddDir(t *testing.T) {data : […

第八届“英拿科技杯”上海高校金马程序设计联赛暨东华大学邀请赛

第八届“英拿科技杯”上海高校金马程序设计联赛暨东华大学邀请赛 仪表盘所有提交榜单 I. 孤星 单点时限: 2.0 sec 内存限制: 512 MB &#x1d45b;(1≤103) 个干员&#xff0c;每个干员工资为 &#x1d464;&#x1d456;(1≤&#x1d464;&#x1d456;≤105)&#xff0c;贡献…

JAVA云HIS医院系统源码 HIS源码:云HIS系统与SaaS的关系

云HIS系统与SaaS的关系 云HIS系统是一种基于云计算技术的医院信息系统&#xff0c;它采用B/S架构&#xff0c;通过云端SaaS服务的方式提供。用户可以通过浏览器访问云HIS系统&#xff0c;无需关注系统的部署、维护、升级等问题。云HIS系统通常具有模板化、配置化、智能化等特点…

react记录部署

导语 React中的核心概念 1 虚拟DOM&#xff08;Virtual DOM&#xff09; 2 Diff算法&#xff08;虚拟DOM的加速器&#xff0c;提升React性能的法宝&#xff09; React主要的原理 Virtual DOM 虚拟DOM; 提供了一种不同的而又强大的方式来更新DOM&#xff0c; 代替直接的DOM操…

cuda11.8安装torch2.0.1

pip install torch2.0.1 torchvision0.15.2 torchaudio2.0.2 --index-url https://download.pytorch.org/whl/cu118

hot100 -- 回溯(上)

目录 &#x1f35e;科普 &#x1f33c;全排列 AC DFS &#x1f6a9;子集 AC DFS &#x1f382;电话号码的字母组合 AC DFS &#x1f33c;组合总和 AC DFS &#x1f35e;科普 忘记 dfs 的&#xff0c;先看看这个&#x1f447; DFS&#xff08;深度优先搜索&#xf…

百度软件测试面试经历,期望薪资27K

一面 1、 请为百度搜索框设计测试用例&#xff1f; 2、百度设计框上线前需要进行那些测试&#xff1f; 界面测试&#xff0c;功能测试&#xff0c;性能测试&#xff0c;安全性测试&#xff0c;易用性测试&#xff0c;兼容性测试&#xff0c;UI测试。 3、如何查看http状态码…

重学java 38.创建线程的方式⭐

It is during our darkest moments that we must focus to see the light —— 24.5.24 一、第一种方式_继承extends Thread方法 1.定义一个类,继承Thread 2.重写run方法,在run方法中设置线程任务(所谓的线程任务指的是此线程要干的具体的事儿,具体执行的代码) 3.创建自定义线程…

基于灰狼优化算法优化支持向量机(GWO-SVM)回归预测

代码原理 基于灰狼优化算法优化支持向量机&#xff08;GWO-SVM&#xff09;的回归预测代码的原理和流程如下&#xff1a; 1. **初始化灰狼群体**&#xff1a;随机生成一定数量的灰狼&#xff0c;并初始化它们的位置和速度。 2. **初始化SVM模型参数**&#xff1a;根据问题要…