LeetCode hot 100—二叉树的最大深度
题目
给定一个二叉树 root ,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:3示例 2:
输入:root = [1,null,2] 输出:2
分析
深度优先搜索(递归)
核心思想:对于一个二叉树,它的最大深度等于其左子树和右子树的最大深度中的较大值加 1(加上当前根节点)。如果根节点为空,那么深度为 0。
时间复杂度:O(),
为二叉树节点的个数
空间复杂度:O(),
表示二叉树的高度
class Solution {
public:int maxDepth(TreeNode* root) {if (root == nullptr) {return 0;}int leftDepth = maxDepth(root->left);int rightDepth = maxDepth(root->right);return max(leftDepth, rightDepth) + 1;}
};
广度优先搜索(迭代)
核心思想:通过队列来存储每一层的节点,每遍历完一层,深度加 1。
时间复杂度:O(),
为二叉树节点的个数
空间复杂度:O(),
是二叉树中节点数最多的那一层的节点数
class Solution {
public:int maxDepth(TreeNode* root) {if (root == nullptr) {return 0;}queue<TreeNode*> nodeQueue;nodeQueue.push(root);int depth = 0;while (!nodeQueue.empty()) {int levelSize = nodeQueue.size();for (int i = 0; i < levelSize; ++i) {TreeNode* current = nodeQueue.front();nodeQueue.pop();if (current->left) {nodeQueue.push(current->left);}if (current->right) {nodeQueue.push(current->right);}}++depth;}return depth;}
};
知识充电
queue 队列
queue(队列)是一种重要的数据结构,遵循先进先出(FIFO, First-In-First-Out)的原则。
基本操作
初始化
#include <queue>
// 定义一个存储 int 类型元素的队列
std::queue<int> myQueue;
入队(push)
push 方法用于将一个元素添加到队列的尾部。
#include <iostream>
#include <queue>
int main() {std::queue<int> myQueue;// 入队操作myQueue.push(10);myQueue.push(20);myQueue.push(30);return 0;
}
出队(pop)
pop 方法用于移除队列头部的元素,但不返回该元素的值。
#include <iostream>
#include <queue>
int main() {std::queue<int> myQueue;myQueue.push(10);myQueue.push(20);myQueue.push(30);// 出队操作myQueue.pop();// 此时队列中剩下 20 和 30return 0;
}
访问头元素(front)
front 方法用于返回队列头部的元素,但不将其从队列中移除。
#include <iostream>
#include <queue>
int main() {std::queue<int> myQueue;myQueue.push(10);myQueue.push(20);myQueue.push(30);// 访问队列头部元素int frontElement = myQueue.front();std::cout << "The front element of the queue is: " << frontElement << std::endl;return 0;
}
访问尾元素(back)
back 方法用于返回队列尾部的元素,但不将其从队列中移除。
#include <iostream>
#include <queue>
int main() {std::queue<int> myQueue;myQueue.push(10);myQueue.push(20);myQueue.push(30);// 访问队列尾部元素int backElement = myQueue.back();std::cout << "The back element of the queue is: " << backElement << std::endl;return 0;
}相关文章:
LeetCode hot 100—二叉树的最大深度
题目 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:root [1,n…...
.h264/.h265文件 前端直接播放
由于接收摄像头 告警视频,需要前端直接播放,不想后端转码后传输。 摄像头 判断到告警后往服务器上报 .h264 /.h265 视频文件。 解决方式:html5直接采用 ffmpeg 进行转码 ,然后塞入 video标签,进行播放 目前改动ffmp…...
【单片机通信技术】串口通信的几种方式与比较,详细解释SPI通信
一、介绍 串口通信是一种通过串行接口逐位传输数据的通信方式,广泛应用于嵌入式系统、工业控制、传感器网络等领域。 二、以下是几种常见的串口通信方式及其对比: 1.UART(Universal Asynchronous Receiver/Transmitter) 特点&am…...
PDF转JPG(并去除多余的白边)
首先,手动下载一个软件(poppler for Windows),下载地址:https://github.com/oschwartz10612/poppler-windows/releases/tag/v24.08.0-0 否则会出现以下错误: PDFInfoNotInstalledError: Unable to get pag…...
题目 3217 ⭐成绩统计⭐【滑动窗口 + 二分搜索】蓝桥杯2024年第十五届省赛
小蓝的班上有 n n n 个人,一次考试之后小蓝想统计同学们的成绩,第 i 名同学的成绩为 a i a_i ai 。当小蓝统计完前 x x x 名同学的成绩后,他可以从 1 ∼ x 1 ∼ x 1∼x 中选出任意 k k k 名同学的成绩,计算出这 k k k 个成…...
URL中的特殊字符与web安全
在现代Web应用中,URL作为客户端与服务器之间的通信桥梁,承载着大量的重要信息。URL中的特殊字符,看似只是一些常见的符号,但在Web安全领域,它们与其他安全知识密切相关,如在Base64编码、SQL注入,…...
八卡5090服务器首发亮相!
AI 人工智能领域热度居高不下。OpenAI 的 GPT - 4 凭强悍语言处理能力,在内容创作、智能客服等领域广泛应用。清华大学团队的 DeepSeek 大模型在深度学习训练优势突出,正促使各行业应用端算力需求向推理主导转变,呈爆发式增长 。 随着 DeepS…...
esp32驱动带字库芯片TFT屏幕
前言 学习esp32单片机开发,前段时间在网上买了一块2.0寸TFT屏幕。 长这个样子,这个屏幕带汉字字库的硬件模块。我仔细看了一下这个字库模块上面写的字是25Q32FVSIG 1336 文档 卖家也发来了开发文档,是个doc文档,张这个样子。 开…...
为AI聊天工具添加一个知识系统 之138 设计重审 之2 文章学 引言之2 附加符号学附属诠释学附随工程学(联系)
本文要点 要点 符号学大局观: 诠释学(当代 加成[0]:“预期”和“预设” 两者的 不期而遇 。“邂逅”) 我们在文章学工具设计中 以全局观考虑:嵌入编程工具的逻辑性底( 哲学诠释 下确界) 并…...
java环境部署
java环境部署 一、准备工作 jrejdkeclipse jdk下载:21和1.8-----官网:Oracle:Java 下载 |神谕 该处选择要依据自身的系统类型选择下载 idea的下载安装:IntelliJ IDEA | Other Versions 二、安装 三、环境配置 四、使用 五、i…...
正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-2.1 uboot简介
前言: 本文是根据哔哩哔哩网站上“Arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用: …...
CentOS 7.9 安装 ClickHouse 文档
1. 环境准备 确保系统为 CentOS 7.9,并已安装 Docker。如果未安装 Docker,请先安装 Docker。 安装 Docker # 卸载旧版本 Docker(如果有) sudo yum remove -y docker docker-client docker-client-latest docker-common docker-…...
高考數學。。。
2024上 具体来说,直线的参数方程可以写为: x1t y−t z1t 二、简答题(本大题共5小题,每小题7分,共35分。) 12.数学学习评价不仅要关注结果评价,也要关注过程评价。简要说明过程评价应关注哪几个方面。…...
使用GitLink个人建站服务部署Allure在线测试报告
更多技术文章,访问软件测试社区 文章目录 🚀前言🔑开通GitLink个人建站服务1. 前提条件2. 登录GitLink平台(https://www.gitlink.org.cn/login)3. 进入设置>个人建站>我的站点4. 新建站点5. 去仓部进行部署6. 安…...
Linux 上离线安装 python3
在Linux系统上进行离线安装 Python3,通常是因为目标机器没有网络连接。以下是一个通用的步骤指南,帮助你在这种情况下成功安装Python 3: 下载安装包 选择一台有网络连接的机器:这台机器的操作系统应该尽可能与目标机器相同或相似…...
js操作字符串的常用方法
1. 查找和截取 1.1 indexOf 作用:查找子字符串在字符串中首次出现的位置。 是否改变原字符串:不会改变原字符串。 返回值:如果找到子字符串,返回其起始索引(从 0 开始);如果未…...
自动化学习-使用git进行版本管理
目录 一、为什么要学习git 二、git是什么 三、git如何使用 1、git的下载安装和配置 2、git常用的命令 3、gitee远程仓库的使用 (1)注册 (2)创建仓库 (3)配置公钥(建立电脑和git…...
GCC RISCV 后端 -- GCC Passes 注释
在前面文章提到,当GCC 前端完成对C源代码解析完成后,就会使用 处理过程(Passes)机制,通过一系列的处理过程,将 GENERIC IR 表示的C程序 转步转换成 目标机器的汇编语言。过程描述如下图所示: 此…...
Ollama存在安全风险的情况通报及解决方案
据清华大学网络空间测绘联合研究中心分析,开源跨平台大模型工具Ollama默认配置存在未授权访问与模型窃取等安全隐患。鉴于目前DeepSeek等大模型的研究部署和应用非常广泛,多数用户使用Ollama私有化部署且未修改默认配置,存在数据泄露、算力盗…...
IDEA Generate POJOs.groovy 踩坑小计 | 生成实体 |groovy报错
一、无法生成注释或生成的注释是null 问题可能的原因: 1.没有从表里提取注释信息,修改def calcFields(table)方法即可 def calcFields(table) {DasUtil.getColumns(table).reduce([]) { fields, col ->def spec Case.LOWER.apply(col.getDataType().…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

