当前位置: 首页 > news >正文

JAVA练习305- 二叉树的最大深度

题目概览

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

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

示例 1:

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

示例 2:

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

提示:

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

来源:104. 二叉树的最大深度 - 力扣(LeetCode)

解题分析

方法一:深度优先搜索

当前节点就是一层,然后只需要知道左边节点和右边节点中的最大深度,就能得到答案,用递归即可。

时间复杂度:O(n)
空间复杂度:O(n)

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public int maxDepth(TreeNode root) { if (root == null) { return 0; } return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1; } }

方法二:广度优先搜索

使用队列一层一层遍历,记录层数即可。

时间复杂度:O(n)
空间复杂度:O(n)

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public int maxDepth(TreeNode root) { if (root == null) { return 0; } Queue<TreeNode> dq = new LinkedList<>(); dq.offer(root); int maxDepth = 0; while(!dq.isEmpty()) { int size = dq.size(); while(size-- > 0) { TreeNode node = dq.poll(); if (node.left != null) { dq.offer(node.left); } if (node.right != null) { dq.offer(node.right); } } maxDepth++; } return maxDepth; } }
http://www.jsqmd.com/news/1213690/

相关文章:

  • 抖音内容管理革命:Douyin Downloader 一站式批量下载解决方案
  • Python 量化核心基础:前复权、后复权与不复权有什么区别?基于 QuantDash 的数据处理与回测避坑指南
  • 水落石出亦有时
  • 如何快速提升老旧窗口清晰度:Magpie超分辨率工具的终极指南
  • 终极免费激活指南:3分钟搞定Windows和Office完整教程
  • NxShell:为什么这个跨平台SSH客户端能重新定义远程服务器管理?
  • AI自主获取技能:一行命令实现智能工具自动发现与组合
  • 设计师正在悄悄淘汰的Canva用法:2024 Q2平台算法更新后,这6种操作已触发自动降权
  • HeyGen数字人批量生成卡顿?实测对比RTX4090/AMD W7900/A100三类硬件在1080p×30fps下的帧率衰减曲线与最优批处理策略
  • 2026广州黄金回收权威横评|7大品牌实测对比,添价收综合实力断层第一 - 分享测评官
  • 麒麟系统输入法窗口级自动切换配置指南
  • Android开发入门:从环境搭建到四大组件详解
  • Faster-Whisper-GUI:免费离线的语音识别工具,5分钟完成音频转文字终极方案
  • 3分钟搞定Windows苹果设备驱动:终极安装指南与技巧
  • 2026深圳装修公司甄选指南|6家综合表现较好的本地装企参考 - 装修新知
  • Zygisk Assistant终极指南:Android Root隐藏的完整解决方案
  • Windows系统文件dmocx.dll丢失找不到问题解决
  • DBCHM数据库文档自动化生成工具:5分钟解决团队协作文档管理难题
  • Linux中文输入法安装与优化全指南
  • 嵌入式TCP/IP协议栈开发与优化实战
  • 45.7MB 整合包 OpenClaw 2.7.9 双系统部署避坑全流程
  • 苏州黄金回收避坑指南,新手卖金必看攻略 - 奢侈品回收评测
  • 别再盲目学LangChain!真正赚钱的AI编程副业,只聚焦这3类高复购、低交付需求
  • Codex自我蒸馏技术:AI自动化重复劳动实战指南
  • 星露谷物语资源解包终极指南:3分钟掌握StardewXnbHack高效工作流
  • 零基础极速上手:30分钟用AI建站工具做出你的第一个网站
  • 仅限首批200名架构师获取:AI Agent灰度发布Checklist v3.2(含OpenTelemetry+LangSmith深度集成模板)
  • 高级会计师报名机构怎么做GEO优化?AI获客工具让学员搜到您 - 红枫叶GEO优化公司
  • Android手机直连Switch传输游戏:NS-USBLoader移动版终极指南
  • Nexus Mods App架构深度解析:现代游戏模组管理系统的技术实现