二叉树OJ题:LeetCode--104.二叉树的最大深度

news2024/10/7 6:38:53

朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第104道二叉树OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成!

数据结构与算法专栏:数据结构与算法

个  人  主  页 :stackY、

C 语 言 专 栏C语言:从入门到精通

 LeetCode--104.二叉树的最大深度:https://leetcode.cn/problems/maximum-depth-of-binary-tree/

目录

1.题目介绍

2.实例演示

3.解题思路

代码演示:

递归展开图:


1.题目介绍

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

2.实例演示

3.解题思路

要求二叉树的最大深度,我们同样的也是采用递归遍历的方法:

二叉树的最大深度等价于:左右子树的最大深度 + 1

要求1的高度,那么就得求它的左右子树2、3的高度,要求2和3的高度就得分别求它们左右子树的高度...依次类推,4的左右子树高度为0,这时4返回给2时返回的高度为0+1(0表示它的左右子树的高度为0,1表示它自己的高度为1),也就是说再返回时要加上自己本身的高度,所以2的左子树的高度为1,再来计算2的右子树5的高度,计算5的高度又得计算5的左右子树的高度,5的左子树高度为1,右子树高度为0,取较大的为1,5返回2时再加上自己本身的高度为2,所以取2的左右子树较高的高度为2,所以2返回1时再加上自己本身的高度为3.....依次类推,直到遍历完整个二叉树。所以最后整颗树的高度为4。

代码演示:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */

/*
解题思路:
二叉树的最大深度等价于:左右子树的最大深度 + 1
*/

int maxDepth(struct TreeNode* root){

    //为空树就返回0
    if(root == NULL)
        return 0;
    //计算左右子树的深度
    int High_Left = maxDepth(root->left) + 1; 
    int High_Right = maxDepth(root->right) + 1;
    //比较左右子树的大小,返回最大的深度
    if(High_Left > High_Right)
    {
        return High_Left;
    }
    return High_Right;
}

 递归展开图:

 每一次递归的返回值并不是直接返回到最外面,而是返回上一层,这一点要注意。

朋友们、伙计们,美好的时光总是短暂的,我们本期的的分享就到此结束,最后看完别忘了留下你们弥足珍贵的三连喔,感谢大家的支持!  

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

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

相关文章

SAP从入门到放弃系列之工艺路线-子工序-Part2

文章目录 概述使用场景子工序内容1、 维护工序控制码2、维护子工序的工资类型3、作业标准值4、用户定义字段5、通过维护子工序的作业类型数据后,点击汇总标准值,工序的作业类型值可以通过子工序进行累计6、可以设置子工序是否带入生产订单 注意事项&…

selenium通过xpath定位text换行的元素

DOM元素(该元素是换行的,不能通过普通xpath定位): 可使用下面xpath定位该div //div[./text()/following-sibling::text()"点" and ./text()"5"] 解释一下就是:定位“子节点的text是[5] 且 子节点…

自然语言处理(概念)

1、 RNN模型简介 1.2传统RNN模型 2、LSTM模型 3、GRU模型 5、注意力机制 6、人名分类器 7 、BERT 8、Transformer 的结构是什么样子的? 各个子模块有什么作用? 8.1 Encoder模块 8.2 Decoder模块 8.3 Transformer 结构中的Decoder端具体输入是什么&#…

C# wpf 附加属性实现任意控件拖动调整大小

摘自这里 https://blog.csdn.net/u013113678/article/details/121719278 调试效果如下 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using Syst…

vue修改数据后页面不重新渲染

使用vue&#xff0c;遇到几次修改了对象的属性后&#xff0c;页面并不重新渲染 一、直接添加属性的问题 <template><div><p v-for"(value,key) in item" :key"key">{{ value }}</p><button click"addProperty">…

【Linux】在Ubuntu下部署nginx——nginx的负载均衡

介绍 这里是小编成长之路的历程&#xff0c;也是小编的学习之路。希望和各位大佬们一起成长&#xff01; 以下为小编最喜欢的两句话&#xff1a; 要有最朴素的生活和最遥远的梦想&#xff0c;即使明天天寒地冻&#xff0c;山高水远&#xff0c;路远马亡。 一个人为什么要努力&a…

vs中的一些编码问题

1. 基本概念 文件编码格式 首先vs中编辑&#xff0c;保存文件实际上也是将文件内容以一定的编码格式存储。对于中文字符串 string s "一"; 按不同的编码格式保存后&#xff0c;通过16进制文件查看器&#xff0c;可以看到中文的编码是能对应上的。 开放高级保存…

select和pselect的关于信号打断的实验

select和pslect的man手册 SELECT(2) Linux Programmers Manual SELECT(2)NAMEselect, pselect, FD_CLR, FD_ISSET, FD_SET, FD_ZERO - synchronous I/O …

【HDFS实战】HDFS联合(联邦)集群的发展史

HDFS联合集群的发展史 文章目录 HDFS联合集群的发展史HDFS原始架构方案一 HDFS Federation方案二 ViewFs方案三 HDFS Router-based Federation常用命令常用配置RPC serverConnection to the NamenodesAdmin serverHTTP ServerState StoreRoutingNamenode monitoring 版本相关is…

nestJS打印多层对象以及铺平金额类型

console.dir(ret, { depth: 3 }); 金额是Decimal类型不好显示 Logger.verbose(JSON.stringify(ret, null, 2)); 利用JSON.stringify参数格式化 null: 不对数据进行提取&#xff0c; 2&#xff1a;缩进两个空格&#xff0c; 效果是直接帮忙平铺金额对象

java.lang.IllegalStateException Unable to find a @SpringBootConfiguration代码报错

文章目录 一. 问题场景二. 报错原因三. 解决方案 一. 问题场景 使用idea基于springBoot的项目进行单元测试时&#xff0c;出现异常&#xff0c;如下所示&#xff1a; Test ignored.java.lang.IllegalStateException: Unable to find a SpringBootConfiguration, you need to …

【电源专题】案例:电池保护芯片有是否能向0V电池充电的功能的区别

本案例发生在实际的工作之中。案例是这样的,有些产品因为各种原因没有按规范将电池与设备断开,而是插入机器(存在1mA的静态功耗)中并存放在仓库里2年后发现产品无法开机使用,并且电池无法充电。更换新的电池后运行正常,所以认定为是电池的问题。 可是为什么电池无法充电呢…

学妹:怎样才能设计出优秀的测试用例?

这篇文章我们主要聊一下测试工程师最通用的也是最根本的技能&#xff0c;测试用例的设计能力。 测试用例 测试用例是通过使用在测试计划中确定的测试技术&#xff0c;对于已确定的测试条件进行逐步推敲&#xff0c;精炼而设计出来的重点说明如何具体操作产生何种结果的文档。…

(免费分享)基于springboot,vue高校就业系统

管理员&#xff1a;10086/123 学生&#xff1a;10087/123 企业&#xff1a;10070/123 辅导员&#xff1a;10090/123 项目描述 高校就业管理系统 学生 : 个人信息、查看企业岗位信息、简历信息管理、我的应聘 辅导员 : 学生信息管理、三方协议书审核、查看班级就业统计信息 企…

App启动流程分析(一)

一、App启动涉及到的三个进程 1、Launcher进程&#xff1a;负责接收用户点击屏幕的事件&#xff0c;它其实就是一个Activity&#xff0c;屏幕上的各种Icon就是这个Activity中的Button&#xff0c;当点击Icon时&#xff0c;会触发启动App的流程。 2、SystemServer进程&#xff…

新手小白学JAVA_IDEA修改编辑与控制台字体大小

很多小白在刚刚使用IDEA的时候还不是很熟练 本文主要给大家提供一些使用的小技巧&#xff0c;希望能帮助到你 1.改变编辑窗口字体大小 1.1 将字体大小设置为固定值 我们可以将编辑窗口的字体大小设置为固定值 1.2 动态改变字体的大小 我们还可以通过Ctrl鼠标滚轮改变编辑窗口…

微信小程序怎么制作自己的小程序

小程序制作是指通过工具或开发语言制作微信平台上的小型应用程序&#xff0c;具有轻量、易用、无需下载安装等优点。随着移动互联网的飞速发展&#xff0c;小程序已经成为了各种企业和个人展示自己、提供服务的重要手段之一。 小程序制作的好处 小程序可以提高品牌曝光度。在…

SpringBoot + 规则引擎 URule,真的太强悍了!

一、背景 前段时间&#xff0c;在做项目重构的时候&#xff0c;遇到很多地方需要做很多的条件判断。当然可以用很多的if-else判断去解决&#xff0c;但是当时也不清楚怎么回事&#xff0c;就想玩点别的。于是乎&#xff0c;就去调研了规则引擎。 当然&#xff0c;市面上有很多…

Springboot 中RESTtemplate的使用

目录 一 概述 二 应用 1.get请求 2.post请求 一 概述 RESTtemplate提供了http请求连接的功能。spring 框架提供的 RestTemplate 类可用于在应用中调用 rest 服务&#xff0c;它简化了与 http 服务的通信方式&#xff0c;统一了 RESTful 的标准&#xff0c;封装了 http 链接…

行业报告 | 智能教育发展蓝皮书(下)

原创 | 文 BFT机器人 核心观点 Core point 在教育数字化转型的背景下&#xff0c;积极探索智能技术助力教学减负增效的实践路径&#xff0c;对于深化教育教学改革&#xff0c;促进学生全面发展、健康成长具有重要现实意义。 03 智能技术助力教学设计 教学设计以解决实际的教学…