【二叉树】LC 104.二叉树的最大深度
文章目录前言一、题目1、原题链接2、题目描述二、个人思路整理1、思路分析DFS递归解法时间复杂度O(n) 、空间复杂度O(h)BFS层序遍历解法时间复杂度O(n)、空间复杂度O(w)2、解题代码递归解法时间复杂度O(n) 、空间复杂度O(h)迭代解法时间复杂度O(n)、空间复杂度O(w)三、知识风暴前言本专栏文章为《LeetCode 热题 100》的刷题题解相关内容如有侵权立即删除。一、题目1、原题链接104.二叉树的最大深度2、题目描述二、个人思路整理1、思路分析DFS递归解法时间复杂度O(n) 、空间复杂度O(h)递归终止条件当前节点为空则直接返回递归体分别递归计算左、右子树的深度取最大值当前节点所在子树的深度即为最大值1。复杂度分析时间复杂度O ( n ) \mathcal{O}(n)O(n)每个节点都会被遍历一次其中n nn为节点总数。空间复杂度O ( h ) \mathcal{O}(h)O(h)取决于递归调用的栈深度其中h hh为树的高度最坏情况下退化为链表时为O ( n ) \mathcal{O}(n)O(n)平衡二叉树时为O ( log ⁡ n ) \mathcal{O}(\log n)O(logn)。BFS层序遍历解法时间复杂度O(n)、空间复杂度O(w)利用队列依次【循环将每层的节点入队在处理每层节点时循环出队元素在每个节点出队时将其左、右孩子入队如果有方便下一轮循环】同时在处理完每层节点时记录层层数直至队列为空最终答案即为最大深度。复杂度分析时间复杂度O ( n ) \mathcal{O}(n)O(n)遍历所有节点。空间复杂度O ( w ) \mathcal{O}(w)O(w)队列中最多保存树中节点较多那一层的节点数即树的最大宽度w ww。2、解题代码递归解法时间复杂度O(n) 、空间复杂度O(h)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */classSolution{public:intmaxDepth(TreeNode*root){if(rootnullptr){return0;}returnmax(maxDepth(root-left),maxDepth(root-right))1;}};迭代解法时间复杂度O(n)、空间复杂度O(w)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */classSolution{public:intmaxDepth(TreeNode*root){if(rootnullptr){return0;}queueTreeNode*q;q.push(root);intans0;while(!q.empty()){intsizeq.size();//记录当前层的节点数控制下面循环次数如果不记录这个值而是直接用q.size()作为循环判断条件则会导致死循环//处理当前层的size个节点同时将下一层即这个size个节点的孩子放入队列while(size--){TreeNode*tmpq.front();q.pop();if(tmp-left!nullptr){q.push(tmp-left);}if(tmp-right!nullptr){q.push(tmp-right);}}ans;//每处理完一层深度1}returnans;}};三、知识风暴DFS与BFS易错点总结BFS 必须先固定每层节点数进入每层遍历前必须用int size q.size();固定当前层节点数量切忌直接把q.size()写在循环条件中因为入队新节点会改变q.size()导致把下一层节点混入当前层引发死循环或深度统计错误。深度累加时机ans必须在处理完一整层节点后执行而非每弹出单个节点就累加。

相关新闻

Linux硬链接与软链接原理详解:从Inode到ls/stat/find实战识别

Linux硬链接与软链接原理详解:从Inode到ls/stat/find实战识别

1. 文件链接的本质:从存储原理说起在Linux世界里,文件链接是个既基础又容易让人混淆的概念。很多朋友在操作文件时,可能会遇到两个文件名指向同一个内容的情况,或者一个快捷方式指向另一个文件。这背后就是硬链接和软链接&#xf…

2026/8/8 8:00:16 阅读更多 →
传统商协会管理难?一套商协会管理系统完整落地方案

传统商协会管理难?一套商协会管理系统完整落地方案

一、前言:商协会数字化转型迫在眉睫商会、行业协会、学会、研究会等社会团体,普遍存在多年线下管理遗留痛点:会员档案 Excel 零散存储,入会、换届、退会流程全线下,审批效率极低;会费收缴靠人工通知&#x…

2026/8/8 8:00:16 阅读更多 →
从 SEGW 元数据到真正可运行的 OData 服务,彻底搞懂 Runtime Artifacts 的生成机制

从 SEGW 元数据到真正可运行的 OData 服务,彻底搞懂 Runtime Artifacts 的生成机制

在 SAP Gateway Service Builder 里完成一个项目的数据模型定义后,项目树看起来往往已经相当完整。Entity Type 有了,Entity Set 有了,属性、关联关系以及数据源映射也可能已经配置妥当。可到了这个阶段,浏览器还不能因为这些设计时定义就直接访问我们的业务数据,SAPUI5 和…

2026/8/8 8:00:16 阅读更多 →

最新新闻

告别Makefile复杂语法:5分钟掌握现代命令行任务运行器just

告别Makefile复杂语法:5分钟掌握现代命令行任务运行器just

告别Makefile复杂语法:5分钟掌握现代命令行任务运行器just 【免费下载链接】just 🤖 Just a command runner 项目地址: https://gitcode.com/GitHub_Trending/ju/just 还在为跨平台项目维护复杂的Makefile而烦恼吗?或者厌倦了每次都要…

2026/8/8 20:07:21 阅读更多 →
团队协作新范式:TencentDB Agent Memory如何实现多智能体记忆共享与协同?

团队协作新范式:TencentDB Agent Memory如何实现多智能体记忆共享与协同?

团队协作新范式:TencentDB Agent Memory如何实现多智能体记忆共享与协同? 【免费下载链接】TencentDB-Agent-Memory TencentDB Agent Memory is a team-level memory hub for AI Agents — turning conversations, docs, and code into four reusable me…

2026/8/8 20:07:21 阅读更多 →
RetrofitCache数据模拟实战:从Assets、内存到URL的全方位方案

RetrofitCache数据模拟实战:从Assets、内存到URL的全方位方案

RetrofitCache数据模拟实战:从Assets、内存到URL的全方位方案 【免费下载链接】RetrofitCache RetrofitCache让retrofit2okhttp3rxjava配置缓存如此简单。通过注解配置,可以针对每一个接口灵活配置缓存策略;同时让每一个接口方便支持数据模拟…

2026/8/8 20:07:21 阅读更多 →
用账户分组做内容矩阵:同平台多账号如何发

用账户分组做内容矩阵:同平台多账号如何发

用账户分组做内容矩阵:同平台多账号如何发 做多账号内容分发时,真正难的往往不是多登几个号,而是这篇内容到底该发给哪一组账号。如果每次都临时手选目标,账号一多,错发、漏发、重复发和复盘困难基本都会一起出现。 …

2026/8/8 20:07:21 阅读更多 →
时间常数RC的计算方法

时间常数RC的计算方法

RC时间常数//R1//R2是并联的意思,读作R1与R2并联,就是R1与R2并联,R1//R2R1*R2/(R1R2)。在电阻中还会出现一个与之类似的表达式...什么是RC的时间常数:RC的时间常数:表示过渡反应的时间过程的常数。在电阻、电容的电路中,它是电阻和电容的乘积…

2026/8/8 20:07:20 阅读更多 →
cacache-rs性能优化指南:解锁高并发场景下的极速缓存体验

cacache-rs性能优化指南:解锁高并发场景下的极速缓存体验

cacache-rs性能优化指南:解锁高并发场景下的极速缓存体验 【免费下载链接】cacache-rs A high-performance, concurrent, content-addressable disk cache, with support for both sync and async APIs. 💩💵 but for your 🦀 项…

2026/8/8 20:06:20 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/8 17:02:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/8 8:58:26 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/8 17:02:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/8 17:02:44 阅读更多 →