104. 二叉树的最大深度

给定一个二叉树 root ,返回其最大深度。

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

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:3

示例 2:

输入:root = [1,null,2]
输出:2

提示:

  • 树中节点的数量在 [0, 104] 区间内。
  • -100 <= Node.val <= 100

算法思路:利用递归遍历二叉树

        二叉树的深度包括需要分别比较左子树和右子树,因为左右子树的深度不一致,只要该节点不为0,深度就要加1。

思维导图:

这里注意的是,我们要看的最大深度是:左右子树延伸的最大深度。

代码实现如下:

//求解二叉树的最大深度int maxDepth(struct TreeNode* root) {if(root == NULL){return 0;}int left_Depth = maxDepth(root->left);int right_Depth = maxDepth(root->right);return 1+(left_Depth > right_Depth ? left_Depth :right_Depth);
}

好了,本期内容就到这里结束了,这里我们只介绍了使用深度优先算法实现二叉树的最大深度求解对于深度小的二叉树非常适用,后续我们还会介绍如何使用广度搜索方法(BFS)+队列 :使用层序遍历,每遍历一层就把深度加一。实现类似的深度求解,

好了本期的内容就到这里了,谢谢大家的点赞和收藏!

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

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

相关文章

微信小程序翻书效果

微信小程序翻书效果 wxml <viewwx:for"{{imgList}}" hidden"{{pagenum > imgList.length - index - 1}}"wx:key"index"class"list-pape" style"{{index imgList.length - pagenum - 1 ? clipPath1 : }}"bindtouchst…

个人IP的塑造方向有哪些?

在内容创业和自媒体发展的浪潮下&#xff0c;个人IP的价值越来越受到重视。个人IP不仅是个人品牌的延伸&#xff0c;更是吸引流量来实现商业变现的重要工具。想要塑造个人IP&#xff0c;需要我们有明确的内容方向和策略&#xff0c;下面就让我们来简单了解下。一、展现自我形象…

Spring之【BeanDefinition】

目录 BeanDefinition接口 代码片段 作用 BeanDefinitionRegistry接口 代码片段 作用 RootBeanDefinition实现类 GenericBeanDefinition实现类 BeanDefinition接口 代码片段 public interface BeanDefinition {// ...void setScope(Nullable String scope);NullableSt…

GD32VW553-IOT LED呼吸灯项目

GD32VW553-IOT LED呼吸灯项目项目简介这是一个基于GD32VW553-IOT开发板的LED呼吸灯演示项目。通过PWM技术控制LED亮度&#xff0c;实现多种呼吸灯效果&#xff0c;展示RISC-V MCU的PWM功能和实时控制能力。功能特性1. 多种呼吸灯效果正弦波呼吸&#xff1a;自然平滑的呼吸效果线…

Linux(Ubuntu)硬盘使用情况解析(已房子举例)

文章目录前言输出字段详解1.核心字段说明2.生活化的方式解释&#xff08;已房间为例&#xff09;3.重点理解①主卧室 (/)​​②​​临时房 (tmpfs)​​总结前言 “df -h” 是在 Linux ​​检查磁盘空间状态的最基本、最常用的命令之一​​。当发现系统变慢、程序报错说“磁盘空…

vue中的this.$set

在 Vue 2 中&#xff0c;this.$set 是一个用于响应式地添加新属性到已有对象的全局 API。它的主要作用是解决 Vue 无法检测到对象属性添加或删除的限制&#xff08;由于 Vue 2 的响应式系统基于 Object.defineProperty 实现&#xff09;。1. 为什么需要 this.$set&#xff1f; …

python爬虫技术——基础知识、实战

参考文献&#xff1a; Python爬虫入门(一)&#xff08;适合初学者&#xff09;-CSDN博客 一、常用爬虫工具包 Scrapy 语言: Python特点: 高效、灵活的爬虫框架&#xff0c;适合大型爬虫项目。 BeautifulSoup 语言: Python特点: 用于解析HTML和XML&#xff0c;简单易用。 Sel…

QT 交叉编译环境下,嵌入式设备显示字体大小和QT Creator 桌面显示不一致问题解决

第一步&#xff1a; 发送fc-list 命令 &#xff0c;查找嵌入式环境下支持的字库第二步 为每个控件指定字库文件&#xff0c;以label控件为例&#xff1a;int fontId QFontDatabase::addApplicationFont("/usr/share/fonts/source-han-sans-cn/SourceHanSansCN-Normal.otf…

php生成二维码

<?php // 包含qrlib库 require_once(qrlib.php);// 二维码内容 $data https://www.example.com;// 生成二维码图片的文件名 $filename qrcode.png;// 二维码参数 $errorCorrectionLevel L; // 错误纠正级别 $matrixPointSize 5; // 生成图片大小// 生成二维码 QR…

#systemverilog# 关键字之 变量声明周期与静态方法关系探讨

我们先看来年下面的代码: class test; task static bar(); …… endtask class test; static task bar(); …… endtask 在 SystemVerilog 中,这两种声明方式有本质区别,涉及方法的静态/非静态属性以及局部变量的生命周期。 1. task static bar(); ... endt…

vim与 neovim 的使用

使用 Vim 阅读 Linux 内核源码是一种高效、轻量级的方式。Linux 源码工程非常庞大&#xff0c;因此推荐你结合 Vim 的一些插件和功能来提高代码导航和阅读效率。 下面是一个完整的指南&#xff0c;帮你用 Vim 更高效地阅读 Linux 源码。 &#x1f527; 一、准备工作 1. 克隆 …

编译原理第六到七章(知识点学习/期末复习/笔试/面试)

第六章 句法制导翻译概述句法制导翻译概述什么是句法制导翻译编译的阶段&#xff1a;词法分析→句法分析→语义分析→中间代码生成→代码优化→目标代码生成语义翻译&#xff1a;语义分析和中间代码生成句法制导翻译 &#xff1a;句法分析和语义分析和中间代码生成句法制导翻译…

Pytorch深度学习框架实战教程02:开发环境部署

相关章节 《Pytorch深度学习框架实战教程09&#xff1a;模型的保存和加载》 《Pytorch深度学习框架实战教程01&#xff1a;深度学习框架简介》 本文详细介绍了PyTorch CPU/GPU双版本的完整安装流程&#xff0c;从环境准备到部署验证&#xff0c;助你快速搭建高效深度学习开发…

初试Spring AI实现聊天功能

文章目录 1. 实战概述 2. 实现步骤 2.1 申请API Key 2.2 创建Spring Boot项目 2.3 添加两个项目相关依赖 2.4 应用属性文件里配置Spring AI 2.5 修改启动类注解属性 2.6 创建第一个聊天控制器 2.7 创建聊天结果页面 2.8 测试第一个聊天控制器 2.9 创建第二个聊天控制器 2.10 创…

【图像处理基石】如何入门色彩评估?

什么是色彩评估&#xff1f; 色彩评估是对色彩的属性、表现、一致性及适用性进行科学分析和主观/客观判断的过程&#xff0c;核心是通过系统方法判断色彩是否符合预期标准&#xff08;如设计要求、行业规范、视觉效果等&#xff09;&#xff0c;广泛应用于印刷、纺织、涂料、产…

6、docker network

docker网络驱动Docker 网络驱动是 Docker 容器网络通信的核心机制&#xff0c;负责管理容器之间的连接、隔离和跨主机通信。Docker 网络驱动的作用网络隔离通过网络命名空间&#xff08;Network Namespace&#xff09;为每个容器提供独立的网络环境&#xff0c;确保容器之间的网…

Qt Quick 粒子系统详解

Qt Quick 粒子系统详解Qt Quick 粒子系统详解一、核心组件二、粒子运动数学模型三、基本粒子系统结构四、完整示例1、火焰效果2、雪花飘落效果3、烟花爆炸效果五、性能优化技巧六、实例展示Qt Quick 粒子系统详解 Qt Quick 粒子系统是用于创建动态视觉特效&#xff08;如爆炸、…

AI问答-供应链管理:各种交通运输方式货运成本分析

一、各种交通运输方式货运成本分析运输方式主要成本构成成本特点适用场景成本优势分析成本劣势分析参考费用&#xff08;示例&#xff09;里程/价格公路运输燃料费用、人工成本&#xff08;司机工资、维修工人工资等&#xff09;、维修费用、保险费用、道路通行费、折旧费、税费…

redis速记

1.什么是缓存穿透&#xff1f;怎么解决&#xff1f;答&#xff1a;缓存穿透是指用户请求的数据在缓存&#xff08;如 Redis&#xff09;和数据库&#xff08;如 MySQL&#xff09;中都不存在&#xff0c;导致每次请求都必须绕过缓存直接查询数据库&#xff0c;最终大量无效请求…

aspnetcore Mvc配置选项中的ModelMetadataDetailsProviders

在ASP.NET Core 中&#xff0c;ModelMetadataDetailsProviders 是用于配置模型元数据提供程序的核心组件&#xff0c;它决定了如何解析和提供模型属性的元数据&#xff08;如数据类型、验证规则、显示名称等&#xff09;。以下是其详细解析&#xff1a; 一、核心概念与作用 模…