news 2026/9/2 23:27:06

104. 二叉树的最大深度

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
104. 二叉树的最大深度

104. 二叉树的最大深度

简单

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

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

示例 1:

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

示例 2:

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

提示:

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

📝 核心笔记:二叉树的最大深度 (Maximum Depth of Binary Tree)

1. 核心思想 (一句话总结)

“向左右下属汇报工作:我的高度 = max(左下属高度, 右下属高度) + 1 (我这一层)。”

这是一个典型的后序遍历 (Post-order Traversal)模型:

  1. 先求左子树的深度。
  2. 再求右子树的深度。
  3. 最后结合两者,算出自己的深度。
2. 算法流程 (递归三步曲)
  1. 终止条件 (Base Case)
    • 如果root == null,说明到了空节点(叶子节点的下一层),深度为0
  1. 递推 (Recurse)
    • int l = maxDepth(root.left)
    • int r = maxDepth(root.right)
  1. 回归 (Return)
    • 返回Math.max(l, r) + 1。这个+1代表当前节点本身贡献的一层高度。
🔍 代码回忆清单
// 题目:LC 104. Maximum Depth of Binary Tree class Solution { public int maxDepth(TreeNode root) { // 1. 递归终止条件:越过叶子节点,高度归零 if (root == null) { return 0; } // 2. 问左孩子有多高 int lDepth = maxDepth(root.left); // 3. 问右孩子有多高 int rDepth = maxDepth(root.right); // 4. 选高的那个,加上自己这一层,汇报给上级 return Math.max(lDepth, rDepth) + 1; } }
⚡ 快速复习 CheckList (易错点 & 扩展)
  • [ ]DFS vs BFS?
    • DFS (本解法):代码短,$O(H)$ 空间(栈深度)。
    • BFS (层序遍历):使用Queue。每遍历完一层,depth++。虽然代码长一点,但思路也很直观。如果面试官问“不用递归怎么做”,就写 BFS。
  • [ ]时间复杂度?
    • 因为每个节点都必须被访问一次才能确定最大深度。
  • [ ]空间复杂度?
    • 。平均情况 $O(\log N)$,最坏情况(退化成链表) $O(N)$。
🖼️ 数字演练

树结构:

3 / \ 9 20 / \ 15 7
  1. maxDepth(9): 左null(0), 右null(0) ->max(0,0)+1=1
  2. maxDepth(15):max(0,0)+1=1
  3. maxDepth(7):max(0,0)+1=1
  4. maxDepth(20): 左(15返回1), 右(7返回1) ->max(1,1)+1=2
  5. maxDepth(3): 左(9返回1), 右(20返回2) ->max(1,2)+1=3

结果:3。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 22:15:41

windows电脑部署OpenClaw

windows电脑部署OpenClaw什么是OpenClawOpenClaw是一个运行在本地电脑的开源 AI 智能体。核心优势&#xff1a;特性说明接入聊天工具出门在外用手机给它留言&#xff0c;它就能自动干活&#xff0c;还能实时同步截图和执行过程定时任务系统用自然语言创建定时任务&#xff0c;如…

作者头像 李华
网站建设 2026/9/2 14:56:07

软工毕业设计最新项目选题帮助

文章目录 &#x1f6a9; 1 前言1.1 选题注意事项1.1.1 难度怎么把控&#xff1f;1.1.2 题目名称怎么取&#xff1f; 1.2 选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢&#xff1f; &#x1f6a9;2 选题概览&#x1f6a9; 3 项目概览题目1 : 图像隐写算法研…

作者头像 李华
网站建设 2026/9/2 22:16:45

核心技术突破:高功率密度线圈赋能智能装备高效运行

高功率密度线圈是指在有限体积和重量条件下&#xff0c;实现更高电磁能量转换效率的线圈产品&#xff0c;是当前高端装备、小型化系统和智能机器人的关键基础部件之一。随着设备集成度不断提升&#xff0c;对线圈性能的要求已从“能用”升级为“高效、稳定、紧凑”。在电机驱动…

作者头像 李华
网站建设 2026/9/2 21:42:12

设计 “砍一刀” 算法:如何做到用户疯狂参与,平台绝不亏?

在电商营销的流量厮杀中&#xff0c;“砍一刀” 凭借病毒式传播成为现象级玩法&#xff0c;但它也是一把 “双刃剑”&#xff1a;设计得当能低成本拉新百万&#xff0c;稍有不慎就会因黑产刷单、成本失控导致平台亏损&#xff0c;甚至引发用户投诉。 考察这类问题时&#xff0c…

作者头像 李华
网站建设 2026/9/2 21:41:11

我开发了一个 Claude Code 技能启动器,从此告别记忆命令的痛苦

仅适用于 Windows 系统 PowerShell 终端 前言&#xff1a;新玩具带来的小烦恼 Claude Code 推出 Skills 系统后&#xff0c;大家的工具箱一下子丰富了起来。 生成周报、处理 PDF、浏览器自动化、视频剪辑……各种技能层出不穷。但用了一段时间后&#xff0c;我发现有个小问…

作者头像 李华
网站建设 2026/9/2 21:41:09

基于Python的个人云盘管理系统的设计与实现(源码+lw+部署文档+讲解等)

课题介绍本课题针对个人文件存储分散、管理不便、文件备份不及时、跨设备访问困难、隐私安全无保障等痛点&#xff0c;设计并实现基于Python的个人云盘管理系统。后端采用Python语言搭建高效稳定的服务架构&#xff0c;整合相关数据处理框架实现文件上传、下载、存储的高效操作…

作者头像 李华