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

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

思路

使用迭代法的话,使用层序遍历是最为合适的,因为最大的深度就是二叉树的层数,和层序遍历的方式极其吻合。

在二叉树中,一层一层的来遍历二叉树,记录一下遍历的层数就是二叉树的深度,如图所示:

层序遍历

所以这道题的迭代法就是一道模板题,可以使用二叉树层序遍历的模板来解决的。

/*** Definition for a binary tree node.* * public class TreeNode {*     int val;              // 节点存储的整数值*     TreeNode left;        // 指向左子节点的引用(指针)*     TreeNode right;       // 指向右子节点的引用(指针)*     *     // 默认构造函数:创建一个空节点(val 默认为 0)*     TreeNode() {}*     *     // 构造函数:根据给定的值创建一个节点,左右子节点默认为 null*     TreeNode(int val) { *         this.val = val; *     }*     *     // 构造函数:根据给定的值和左右子节点创建一个完整节点*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/class Solution {/*** 计算二叉树的最大深度(也称为高度)。* * 二叉树的最大深度是从根节点到最远叶子节点的最长路径上的节点数。* 使用层序遍历(广度优先搜索,BFS)的方式,逐层向下遍历,* 每遍历一层,深度加一,直到所有层都处理完毕。* * 示例:* 给定二叉树:*       3*      / \*     9   20*        /  \*       15   7* 返回最大深度:3* * 解释:* 第0层:[3]        -> 深度 = 1* 第1层:[9, 20]     -> 深度 = 2* 第2层:[15, 7]     -> 深度 = 3* * @param root 二叉树的根节点* @return 返回二叉树的最大深度(整数)*/public int maxDepth(TreeNode root) {// 创建一个队列用于实现广度优先搜索(BFS)// 队列中存储待处理的树节点Queue<TreeNode> queue = new LinkedList<>();// 如果根节点为空,说明树为空,深度为 0if (root == null) return 0;// 将根节点加入队列,作为遍历的起点queue.offer(root);// 记录当前树的深度,初始为 0int depth = 0;// 当队列不为空时,说明还有节点未处理(即还有层未遍历完)while (!queue.isEmpty()) {// 记录当前层的节点数量// 这个值决定了内层循环需要处理多少个节点int len = queue.size();// 每进入一层,深度加一depth++;// 遍历当前层的所有节点(共 len 个)for (int i = 0; i < len; i++) {// 从队列头部取出一个节点进行处理TreeNode temp = queue.poll();// 如果当前节点有左子节点,则将其加入队列,供下一层处理if (temp.left != null) {queue.offer(temp.left);}// 如果当前节点有右子节点,则将其加入队列,供下一层处理if (temp.right != null) {queue.offer(temp.right);}}// 当前层的所有节点处理完毕// 队列中现在存储的是下一层的所有节点(如果有)}// 所有层遍历结束,返回最终的深度return depth;}
}

http://www.dtcms.com/a/414867.html

相关文章:

  • 宿迁做网站的怎样制作h5
  • 电子商务网站建设结业论文seo教程seo官网优化详细方法
  • 使用 Three.js 和本地 Draco Loader 高效加载压缩 GLB 模型
  • Nginx-Proxy-Manager配置SSL泛域名证书教程
  • 图的遍历:从深度优先到广度优先
  • Java数据结构:ArrayList与顺序表1
  • C语言实战项目:贪吃蛇(1)
  • 鸿蒙应用开发之ArkTs集成AI大模型与Markdown流式渲染教程(API 20)
  • 网站建设服务器环境配置关于网站开发的网店计划书范文
  • LeetCode-hot100——将有序数组转换为二叉搜索树
  • 网站速度对seo的影响修改wordpress登录背景图片
  • Kimi 灰度测试 OK Computer,AI 从 “问答” 迈入 “执行” 新阶段​
  • 什么是 mmap?
  • 民宿客用网络升级方案:从传统到现代化的跃迁
  • 湖南省住房和城乡建设厅老网站做网站分为竞价和优化
  • 品牌创意网站建设韩国手机网站模板
  • 力扣3679. 使库存平衡的最少丢弃次数
  • LeetCode:75.前K个高频元素
  • MySQL 基础指令全解析:从入门到熟练操作
  • 南华 NHZ-03/10/13 型滚筒反力式制动检验台:传统制动检测的核心设备
  • 企业网站开发注册网站开发目录结构
  • 做网站哪个公司好 快选宁陵建站宝互联网行业简介
  • cloudfared 内网穿透通过docker方式遇到的问题
  • 利用汇出与汇入函式协助自动化程式开发
  • iis网站域名访问辽宁工程招标网信息平台
  • 网站开发模板系统myphoto wordpress 国外
  • UART,IIC,SPI串行通信优缺点
  • debian12 安装pve
  • DM存储过程和函数中常用的变量、循环、游标、抛出异常
  • php网站开发怎么样西安网站维护 策划