Leetcode 104. 二叉树的最大深度(Java-深度遍历)
题目描述:
给定一个二叉树 root ,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例:

输入:root = [3,9,20,null,null,15,7] 输出:3
示例 2:
输入:root = [1,null,2] 输出:2
提示:
- 树中节点的数量在
[0, 104]区间内。 -100 <= Node.val <= 100
上代码,拿去即可运行:
package onlyqi.daydayupgo07.suanfa;import javafx.util.Pair;
import lombok.Data;import java.util.ArrayDeque;
import java.util.Objects;
import java.util.Queue;
import java.util.Stack;public class MaxTreeDep {public static void main(String[] args) {TreeNode treeNode1 = new TreeNode(3);TreeNode treeNode2 = new TreeNode(9);TreeNode treeNode3 = new TreeNode(20);TreeNode treeNode4 = new TreeNode(15);TreeNode treeNode5 = new TreeNode(7);TreeNode treeNode6 = new TreeNode(66);treeNode2.setRight(treeNode6);treeNode1.setLeft(treeNode2);treeNode1.setRight(treeNode3);treeNode3.setLeft(treeNode4);treeNode3.setRight(treeNode5);System.out.println(getMaxDep1(treeNode1));}// 广度优先遍历public static Integer getMaxDep1(TreeNode treeNode) {if (Objects.isNull(treeNode)) {return 0;}int maxDep = 1;Queue<Pair<TreeNode, Integer>> queue = new ArrayDeque<>();queue.offer(new Pair<>(treeNode, 1));TreeNode temNode = treeNode;while (!queue.isEmpty()) {Pair<TreeNode, Integer> nodeIntegerPair = queue.poll();maxDep = Math.max(nodeIntegerPair.getValue(), maxDep);Integer dep = nodeIntegerPair.getValue();temNode = nodeIntegerPair.getKey();System.out.println("==============:" + temNode.value);if (temNode.left != null) {queue.offer(new Pair<>(temNode.left, dep + 1));}if (temNode.right != null) {queue.offer(new Pair<>(temNode.right, dep + 1));}}return maxDep;}// 深度优先遍历public static Integer getMaxDep(TreeNode treeNode) {if (Objects.isNull(treeNode)) {return 0;}Stack<Pair<TreeNode, Integer>> stack = new Stack<>();stack.push(new Pair<>(treeNode, 1));int maxDepth = 0;while (!stack.isEmpty()) {Pair<TreeNode, Integer> current = stack.pop();TreeNode currentKey = current.getKey();Integer dep = current.getValue();maxDepth = Math.max(maxDepth, dep);System.out.println("==============:" + currentKey.value);if (!Objects.isNull(currentKey.right)) {stack.push(new Pair<>(currentKey.right, dep + 1));}if (!Objects.isNull(currentKey.left)) {stack.push(new Pair<>(currentKey.left, dep + 1));}}return maxDepth;}
}@Data
class TreeNode {int value;TreeNode left;TreeNode right;public TreeNode(int value) {this.value = value;}
}
运行结果:

慢慢来才是最快的方法--天涯明月 共勉
我要刷300道算法题,第138道 。 希望自己可以坚持下去 。
相关文章:
Leetcode 104. 二叉树的最大深度(Java-深度遍历)
题目描述: 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:…...
阳明心学-传习录学习总结
资料 王阳明介绍:明代杰出的思想家、军事家、教育家;自刑部主事历任贵州龙场驿丞、庐陵知县、右佥都御史、南赣巡抚、两广总督等职,接连平定南赣、两广盗乱及宸濠之乱,因功获封“新建伯”,成为明代因军功封爵的三位文…...
macOS sequoia 15.1中应用程序“程序坞”没有权限打开
在macOS sequoia 15.1版本中新安装的应用程序在访达中打开报错显示应用程序“程序坞”没有权限打开“(null)”。 解决办法 在启动台中找到终端,点击打开,切换到应用目录下,输入 cd /Applications/ 找到需要打开的应用程序目录࿰…...
使用 MinIO 和 KKFileView 实现在线文件预览功能
在项目开发中,文件的在线预览是常见的需求,尤其是对 PDF、Word、Excel 等格式的文件进行无客户端依赖的直接查看。本文将介绍如何通过 MinIO 和 KKFileView 搭建在线文件预览服务,并通过 docker-compose 一键部署。 一、环境准备 1. Docker …...
Conda-Pack打包:高效管理Python环境
在Python开发中,环境管理是一个不可忽视的重要环节。Conda是一个流行的包管理器和环境管理器,它允许用户创建隔离的环境,以避免不同项目之间的依赖冲突。Conda-pack是一个工具,可以帮助我们将一个conda环境打包成一个可移植文件&a…...
云服务器上搭建 WordPress 全流程指南
WordPress 是全球最受欢迎的开源内容管理系统(CMS),通过 WordPress,你可以轻松搭建博客、企业网站或电子商务平台。而通过云服务器搭建 WordPress,可以使网站获得更好的性能和灵活性。本文将为你提供详细的步骤&#x…...
图像超分辨率技术新进展:混合注意力聚合变换器HAAT
目录 1. 引言: 2. 混合注意力聚合变换器(HAAT): 2.1 Swin-Dense-Residual-Connected Block(SDRCB): 2.2 Hybrid Grid Attention Block(HGAB): 3. 实验结…...
文件IO——01
1. 认识文件 1)文件概念 “文件”是一个广义的概念,可以代表很多东西 操作系统里,会把很多的硬件设备和软件资源抽象成“文件”,统一管理 但是大部分情况下的文件,都是指硬盘的文件(文件相当于是对“硬…...
【opencv入门教程】5. Mat 类用法
文章选自: 一、BackGround Mat对象是一种图像数据结构,它是一个容器,存储任何通道任何数的图片数据以及对应的矩阵,使用完成后,内存自动释放。二、Code void Samples::MatFunc() {1. 图像处理// 方法1:…...
SSM虾米音乐项目2--分页查询
1.分页查询的底层逻辑 首先根据用户输入的流派,进行模糊查询根据查询的数据进行分页需要前端用户提供pageNo(当前页数)和pageSize(每页的数据量)并且要从后端计算count(总数据量)和totalPage(总页数),以及startNum(每页开始的记录)从而将对应的页面数据…...
nodejs 获取本地局域网 ip 扫描本地端口
因为傻逼老板的垃圾需求,不得不成长 示例代码: 获取本地局域网 ip 地址: 需要注意的是:如果存在虚拟机网络,则返回的是虚拟机网络的 ipv4 地址 import os from os; export const getLocalIp () > {const in…...
区块链签名种类
1. eth_sign 简介:最早实现的签名方法,用于对任意数据进行签名。签名内容:直接对原始消息的哈希值进行签名。特点: 安全性较低,因为签名的消息没有明确的上下文或结构。很容易被滥用,攻击者可以伪造签名内…...
【062B】基于51单片机无线病房呼叫系统(+时间)【Keil程序+报告+原理图】
☆、设计硬件组成:51单片机最小系统NRF24L01无线模块DS1302时钟芯片LCD1602液晶显示按键设置蜂鸣器LED灯。 1、本设计采用STC89C51/52、AT89C51/52、AT89S51/52作为主控芯片,采用LCD1602液晶显示呼叫信息,系统共有两个板子(一个接…...
突破空间限制!从2D到3D:北大等开源Lift3D,助力精准具身智能操作!
文章链接:https://arxiv.org/pdf/2411.18623 项目链接:https://lift3d-web.github.io/ 亮点直击 提出了Lift3D,通过系统地提升隐式和显式的3D机器人表示,提升2D基础模型,构建一个3D操作策略。 对于隐式3D机器人表示&a…...
【pyspark学习从入门到精通24】机器学习库_7
目录 聚类 在出生数据集中寻找簇 主题挖掘 回归 聚类 聚类是机器学习中另一个重要的部分:在现实世界中,我们并不总是有目标特征的奢侈条件,因此我们需要回归到无监督学习的范式,在那里我们尝试在数据中发现模式。 在出生数据…...
Echart折线图属性设置 vue2
Echart折线图 官方配置项手册 Documentation - Apache ECharts 下面代码包含:设置标题、线条样式、图例圆圈的样式、显示名称格式、图片保存、增加Y轴目标值 updateChart(data) {const sortedData data.slice().sort((a, b) > new Date(a.deviceTime) - ne…...
LabVIEW-简单串口助手
LabVIEW-简单串口助手 串口函数VISA配置串口VISA写入函数VISA读取函数VISA资源名称按名称解除捆绑 函数存放位置思维导图主体界面为以下 串口函数 VISA配置串口 VISA写入函数 VISA读取函数 VISA资源名称 按名称解除捆绑 函数存放位置 思维导图 主体界面为以下 从创建好的“枚举…...
Linux下,用ufw实现端口关闭、流量控制(二)
本文是 网安小白的端口关闭实践 的续篇。 海量报文,一手掌握,你值得拥有,让我们开始吧~ ufw 与 iptables的关系 理论介绍: ufw(Uncomplicated Firewall)是一个基于iptables的前端工具…...
C#开发-集合使用和技巧(九)Join的用法
在C#中,IEnumerable 的 Join 方法用于根据键将两个序列中的元素进行关联。Join 方法通常用于执行类似于 SQL 中的内连接操作。以下是 Join 方法的基本用法: 基本语法 public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult…...
Dockerfile容器镜像构建技术
文章目录 1、容器回顾1_容器与容器镜像之间的关系2_容器镜像分类3_容器镜像获取的方法 2、其他容器镜像获取方法演示1_在DockerHub直接下载2_把操作系统的文件系统打包为容器镜像3_把正在运行的容器打包为容器镜像 3、Dockerfile介绍4、Dockerfile指令1_FROM2_RUN3_CMD4_EXPOSE…...
从智能电池到服务器风扇:手把手解析SMBus的15种通信协议与应用实例
从智能电池到服务器风扇:手把手解析SMBus的15种通信协议与应用实例 当你在笔记本电脑上看到剩余电量精确到1%时,或是服务器机柜里的风扇根据温度自动调节转速时,背后都有一个低调的"通信专家"在默默工作——它就是SMBus࿰…...
从HuggingFace迁移MinerU?镜像适配问题全解析
从HuggingFace迁移MinerU?镜像适配问题全解析 1. 项目背景与核心价值 OpenDataLab MinerU 是一个专门针对文档理解场景优化的智能多模态模型。基于 OpenDataLab/MinerU2.5-1.2B 模型构建,这个方案在保持轻量级的同时,提供了出色的文档解析能…...
从数学建模到真实运维:如何用调度模型优化你校园里的共享单车?
从数学建模到真实运维:校园共享单车调度系统的工业级设计实践 清晨7点的校园东门,总能看到一群学生围着仅剩的几辆共享单车"抢车"的场景;而下午3点的体育馆停车点,却堆积着数十辆无人问津的车辆。这种供需错配现象背后&…...
终极指南:如何让AMD和Intel显卡也能享受DLSS级别的AI超分辨率技术
终极指南:如何让AMD和Intel显卡也能享受DLSS级别的AI超分辨率技术 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler Opti…...
快马AI一键生成链表可视化原型,交互演示助力算法设计
最近在复习数据结构时,发现链表这种基础但重要的结构,光看静态图示很难理解指针变化。正好尝试用InsCode(快马)平台快速搭建了一个可视化演示工具,整个过程比想象中简单很多,分享下实现思路: 需求拆解 首先明确需要实现…...
如何用GPT-3.5的function calling功能对接理杏仁API获取金融数据(附完整代码)
金融数据智能对接实战:基于GPT-3.5函数调用与理杏仁API的深度整合 在金融科技领域,数据获取与处理的自动化一直是开发者关注的焦点。传统API对接往往需要编写大量固定逻辑的代码,而大语言模型的出现为这一流程带来了新的可能性。本文将深入探…...
s3fs-fuse架构深度解析:如何通过FUSE实现云端存储的本地化操作
s3fs-fuse架构深度解析:如何通过FUSE实现云端存储的本地化操作 【免费下载链接】s3fs-fuse FUSE-based file system backed by Amazon S3 项目地址: https://gitcode.com/gh_mirrors/s3/s3fs-fuse 在现代云计算环境中,对象存储服务如Amazon S3已经…...
python-flask-djangol框架的 综合游戏攻略社区论坛交流系统的设计
目录需求分析与功能规划技术栈选择数据库设计核心功能实现社区互动设计性能优化安全措施部署与测试扩展功能项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作需求分析与功能规划 明确游戏攻略社区的核心需求:用户注册…...
为什么 CFO 总在年底为固定资产失眠?一位 IT 运维的亲历复盘
上个月,我作为外部顾问,去一家年营收5亿的科技公司做系统健康检查。刚进机房,IT主管就苦笑:“我们的 ERP 里有 1200 台设备,但仓库扫码只扫出 780 台——剩下的,要么‘失踪’,要么重复录入了三次…...
APK Installer技术解析:Windows平台Android应用部署的创新架构
APK Installer技术解析:Windows平台Android应用部署的创新架构 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在传统Android开发与测试流程中,…...
