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

Leetcode 每日一题 104.二叉树的最大深度

目录

问题描述

示例

示例 1:

示例 2:

约束条件

题解

方法一:广度优先搜索(BFS)

步骤

代码实现

方法二:递归

步骤

代码实现

结论


问题描述

给定一个二叉树 root,我们需要返回其最大深度。二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数。

示例

示例 1:

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

示例 2:

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

约束条件

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

题解

我们将使用两种方法来解决这个问题:广度优先搜索(BFS)和递归。

过题图片:

方法一:广度优先搜索(BFS)

BFS 是一种遍历树的层序方法,它从根节点开始,逐层遍历树的每个节点。在每一层,我们记录节点的数量,直到遍历完所有节点。

步骤
  1. 如果根节点为空,返回深度为 0。
  2. 初始化一个队列,将根节点加入队列。
  3. 初始化一个计数器,用于记录当前层的深度。
  4. 当队列不为空时,执行以下操作:
    • 记录当前层的节点数。
    • 遍历当前层的每个节点,将它们的子节点加入队列,并更新深度计数器。
  5. 返回深度计数器的值。
代码实现
 

java

import java.util.LinkedList;
import java.util.Queue;class Solution {public int maxDepth(TreeNode root) {if (root == null) return 0;Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);int depth = 0;while (!queue.isEmpty()) {int size = queue.size();for (int i = 0; i < size; i++) {TreeNode node = queue.poll();if (node.left != null) queue.offer(node.left);if (node.right != null) queue.offer(node.right);}depth++;}return depth;}
}

方法二:递归

递归方法利用了二叉树的最大深度属性:一个节点的最大深度是其左子树和右子树最大深度的最大值加 1。

步骤
  1. 如果根节点为空,返回深度为 0。
  2. 递归计算左子树和右子树的最大深度。
  3. 返回左子树和右子树最大深度的最大值加 1。
代码实现
 

java复制

class Solution {public int maxDepth(TreeNode root) {if (root == null) return 0;return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));}
}

题目链接

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

结论

两种方法都可以有效地求解二叉树的最大深度问题。BFS 方法在遍历过程中逐层计算深度,而递归方法利用了树的结构特性进行求解。根据具体的应用场景和偏好,可以选择适合的方法。

http://www.lryc.cn/news/494006.html

相关文章:

  • 文件上传漏洞:你的网站安全吗?
  • AWS账号提额
  • 电子应用设计方案-29:智能云炒菜系统方案设计
  • 腾讯rapidJson使用例子
  • UE5_CommonUI简单使用(2)
  • 探讨播客的生态系统
  • 淘宝架构演化
  • 软通动力携子公司鸿湖万联、软通教育助阵首届鸿蒙生态大会成功举办
  • 【AI绘画】DALL·E 3 绘图功能与 DALL·E API 探索
  • 【数据事务】.NET开源 ORM 框架 SqlSugar 系列
  • 深入解析下oracle char和varchar2底层存储方式
  • Angular v19 (三):增量水合特性详解 - 什么是水合过程?有哪些应用场景?与 Qwik 相比谁更胜一筹?- 哪个技术好我就学哪个,这就是吸心大法吧
  • 宠物空气净化器推荐2024超详细测评 希喂VS霍尼韦尔谁能胜出
  • 一线、二线、三线技术支持
  • 智截违规,稳保安全 | 聚铭视频专网违规外联治理系统新品正式发布
  • FFmpeg 的 codec 和 format
  • 分布式锁的实现原理
  • 怎样提高自己的能量
  • ospf协议(动态路由协议)
  • 【娱乐项目】竖式算术器
  • Qt中模拟鼠标消息并与系统鼠标消息进行区分
  • 实时数据开发 | 一文理解Flink窗口机制
  • MFC 自定义树控件:树节点的样式与交互
  • YOLOv8-ultralytics-8.2.103部分代码阅读笔记-loss.py
  • 像素流送api ue多人访问需要什么显卡服务器
  • 字符型注入‘)闭合
  • 评分规则的建模,用户全选就是满分10分(分数可自定义), 选2个5分, 选2个以下0分
  • Elasticsearch与NLP的深度融合:文本嵌入与向量搜索实战指南
  • 4. STM32_定时器
  • Mysql 深度分页问题及优化方案