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

[面试精选] 0104. 二叉树的最大深度

文章目录

      • 1. 题目链接
      • 2. 题目描述
      • 3. 题目示例
      • 4. 解题思路
      • 5. 题解代码
      • 6. 复杂度分析

1. 题目链接


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


2. 题目描述


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

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


3. 题目示例


示例 1 :

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

示例 2 :

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

4. 解题思路


  1. 递归DFS遍历
    • 采用深度优先搜索(DFS)策略
    • 从根节点开始向下递归遍历每个节点
  2. 深度计算
    • 每进入一个非空节点,当前深度+1
    • 使用全局变量ans记录遍历过程中遇到的最大深度
  3. 递归终止
    • 遇到空节点时返回(递归基线条件)
    • 非空节点继续向左右子树递归
  4. 关键点
    • 前序遍历顺序(先处理当前节点,再处理子树)
    • 深度参数在递归调用中传递
    • 全局变量记录最大值

5. 题解代码


class Solution {private int ans;  // 存储最大深度结果public int maxDepth(TreeNode root) {dfs(root, 0);  // 从根节点开始深度优先搜索,初始深度为0return ans;    // 返回最大深度}// 递归深度优先搜索方法private void dfs(TreeNode node, int depth) {if (node == null) return;  // 基线条件:空节点返回depth++;  // 当前节点深度+1ans = Math.max(ans, depth);  // 更新最大深度// 递归处理左右子树dfs(node.left, depth);dfs(node.right, depth);}
}

6. 复杂度分析


  1. 时间复杂度:O(n)
    • 每个节点恰好被访问一次
    • n为树中节点总数
  2. 空间复杂度:O(h)
    • 递归调用栈的深度等于树的高度h
    • 最坏情况下(链表状树)为O(n)
    • 平衡二叉树情况下为O(log n)
http://www.xdnf.cn/news/924607.html

相关文章:

  • 历史数据分析——唐山港
  • QT聊天项目DAY14
  • STC8H系列 驱动步进电机
  • 分享下量化快速选股和回测的方法
  • 题目 3241: 蓝桥杯2024年第十五届省赛真题-挖矿
  • 性能优化笔记
  • 《机器学习》(周志华)第一章 绪论
  • 【看到哪里写到哪里】C的“数组指针”
  • 洛谷P12170 [蓝桥杯 2025 省 Python B] 攻击次数
  • 罗尔斯·罗伊斯数字孪生技术赋能航空发动机运维革新:重构维护范式,驱动行业低碳转型
  • 如何拥有自己的镜像和仓库
  • Java 反射机制详解及示例
  • 【数据结构初阶】--算法复杂度的深度解析
  • python中从队列里取出全部元素的两种写法
  • 【C++字符串基础解析1】
  • Java Smart 系统题库试卷管理模块设计:从需求到开发的实战指南
  • 蓝桥杯单片机之通过实现同一个按键的短按与长按功能
  • ubuuntu24.04 编译安装 PostgreSQL15.6+postgis 3.4.2 + pgrouting 3.6.0 +lz4
  • 《拓扑排序》题集
  • 【JavaSE】泛型学习笔记
  • 【评测】用Flux的图片文本修改的PS效果
  • ECharts 提示框(tooltip)居中显示位置的设置技巧
  • CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)
  • Python 接口:从协议到抽象基 类(定义并使用一个抽象基类)
  • 僵尸进程是什么?怎么回收?孤儿进程?
  • vue3: bingmap using typescript
  • 快速上手shell脚本运行流程控制
  • 深度相机的日常学习
  • 20250607-在Ubuntu中使用Anaconda创建新环境并使用本地的备份文件yaml进行配置
  • Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(上)