代码随想录刷题day41|(二叉树篇)二叉树的最大深度(递归)
目录
一、二叉树理论基础
二、二叉树的深度和高度
三、递归和迭代思路
3.1 递归法
3.2 迭代法
四、相关算法题目
五、总结
一、二叉树理论基础
详见:代码随想录刷题day34|(二叉树篇)二叉树的递归遍历-CSDN博客
二、二叉树的深度和高度
二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数;
二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数或者节点数;
本题中,二叉树的最大深度=叶子节点的深度=从根节点到叶子节点的最长简单路径边的条数or节点数=根节点的高度;
一般求深度用前序遍历,求高度用后序遍历;
所以,求二叉树的最大深度就是求根节点的高度,故可以用后序遍历;
三、递归和迭代思路
3.1 递归法
1.确定递归函数的参数和返回值
参数:需要传入根节点,返回值是高度,int类型;
2.确定终止条件
node == null,返回0;
3.确定单层递归的逻辑
按照后序遍历,先处理左节点,递归遍历左节点,求出leftHight,接着递归遍历右节点,求出rightHight,两者取较大值,再加1,也即加上本节点node所在的高度,得出从该节点node到叶子节点的高度;
最后当node = root时,结果就是根节点到叶子节点的高度,也就是叶子节点的深度,即该二叉树的最大深度;
3.2 迭代法
层序遍历,详见:代码随想录刷题day38|(二叉树篇)二叉树的层序遍历(429、515、116、117、104、111)-CSDN博客
四、相关算法题目
104.二叉树的最大深度
class Solution {//递归法:后序遍历public int maxDepth(TreeNode root) {return getHight(root);}public int getHight(TreeNode node){//终止条件if(node == null) return 0;//单层递归的逻辑int leftHight = getHight(node.left);int rightHight = getHight(node.right);int hight = 1 + Math.max(leftHight, rightHight);return hight;}
}
559.N叉树的最大深度
思路:递归法同二叉树,不同点在于孩子节点的处理,没有左右节点之分,用增强for循环遍历所有孩子节点,并递归处理;
class Solution {public int maxDepth(Node root) {//递归法return getHight(root);}public int getHight(Node node){int max = 0;//记录当前节点的所有子节点的最大深度if(node == null) return 0;for(Node child : node.children){int childHight = getHight(child);max = Math.max(max, childHight);}int hight = 1 + max;return hight;}
}
五、总结
1.为什么max 放在循环外面,方法内部/
max是记录当前节点的所有子节点的最大深度,每次递归调用getHight时,max都会被重新初始化为0,然后通过遍历子节点来更新max;
2.没看前序遍历
相关文章:
代码随想录刷题day41|(二叉树篇)二叉树的最大深度(递归)
目录 一、二叉树理论基础 二、二叉树的深度和高度 三、递归和迭代思路 3.1 递归法 3.2 迭代法 四、相关算法题目 五、总结 一、二叉树理论基础 详见:代码随想录刷题day34|(二叉树篇)二叉树的递归遍历-CSDN博客 二、二叉树的深度和高…...
向量内积(点乘)和外积(叉乘)
文章目录 1. 向量的内积(点积)1.1 定义1.2 几何意义表征两个向量的投影关系计算向量夹角的余弦值 1.3 重要性质1.4 应用场景 2. 向量的外积(叉积)2.1 定义(仅适用于三维空间)2.2 几何意义2.3 重要性质2.4 应…...
PDF转JPG(并去除多余的白边)
首先,手动下载一个软件(poppler for Windows),下载地址:https://github.com/oschwartz10612/poppler-windows/releases/tag/v24.08.0-0 否则会出现以下错误: PDFInfoNotInstalledError: Unable to get pag…...
【无人机路径规划】基于麻雀搜索算法(SSA)的无人机路径规划(Matlab)
效果一览 代码获取私信博主基于麻雀搜索算法(SSA)的无人机路径规划(Matlab) 一、算法背景与核心思想 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种受麻雀群体觅食行为启发的元启发式算法࿰…...
2020CVPR-SiamBAN:用于视觉跟踪的Siamese框自适应网络
原文标题:Siamese Box Adaptive Network for Visual Tracking 中文标题:用于视觉跟踪的Siamese框自适应网络 代码地址: GitHub - hqucv/siamban: Siamese Box Adaptive Network for Visual Tracking Abstract 大多数现有的跟踪器通常依靠多尺…...
带你从入门到精通——自然语言处理(五. 自注意力机制和transformer的输入部分)
建议先阅读我之前的博客,掌握一定的自然语言处理前置知识后再阅读本文,链接如下: 带你从入门到精通——自然语言处理(一. 文本的基本预处理方法和张量表示)-CSDN博客 带你从入门到精通——自然语言处理(二…...
MySql自动安装脚本
一、脚本安装流程 1. 添加MySQL的Repository 使用wget命令从MySQL官方网站下载Yum Repository的RPM包。使用rpm -ivh命令安装下载的RPM包,以添加MySQL的Yum Repository。 2. 安装mysql-community-server 使用yum install -y mysql-community-server --nogpgchec…...
3.9【Q】csd
在计算机存储领域,CSD是什么? 基于CXL™-Type3 实现内存池化 CPU访问内存的瓶颈是什么?具体矛盾是什么? 计算型存储-2:标准、API实现 NUMA是什么?详细解释一下它的核心思想?...
Qt常用控件之表格QTableWidget
表格QTableWidget QTableWidget 是一个表格控件,行和列交汇形成的每个单元格,是一个 QTableWidgetItem 对象。 1. QTableWidget属性 QTableWidget 的属性只有两个: 属性说明rowCount当前行的个数。columnCount当前列的个数。 2. QTableW…...
数据库批处理
数据库批处理是一种处理数据的方法,通常用于对大量数据进行一次性操作。批处理可以有效地减少数据库操作的次数,提高数据处理的效率。在数据库中,批处理通常通过编写批处理脚本或使用相应的工具来实现。 一般情况下,数据库批处理…...
Flask 框架简介
Flask 框架简介 Flask 框架简介 Flask 框架简介 Flask 是一个 Python 微型网页开发框架。微型指明了 Flash 的核心是轻量级的,但是可以灵活扩展。下面的简单的例子要和一个数据库系统交互。Django附带了与最常见的数据库交互所需的库。另一方面,Flask允…...
KMP 算法的 C 语言实现
# include <stdio.h> # include <stdlib.h> # include <string.h>// 打印 KMP 匹配结果. void ColorPrint(char *T, int *result, int result_size, int m) {int green_size strlen("\x1b[31m");int reset_size strlen("\x1b[0m");cha…...
深入理解 TCP 协议:可靠传输、连接管理与经典面试题解析
TCP(Transmission Control Protocol)是互联网中最重要的传输层协议之一,其设计目标是提供可靠的、面向连接的、全双工的数据传输服务。本文将从核心机制、工作原理到经典面试题,全面解析 TCP 协议的关键特性。 一、TCP 核心特性 …...
雪花算法
雪花算法(Snowflake) 雪花算法是一种由Twitter开源的分布式ID生成算法,广泛应用于分布式系统中,用于生成全局唯一的ID。这些ID不仅具有唯一性,还按照时间顺序递增,便于排序和查询。以下是雪花算法的详细解…...
coding ability 展开第二幕(双指针——巩固篇)超详细!!!!
文章目录 前言有效的三角形个数思路 查找总价格为目标值的两个商品思路 两数之和思路 三数之和思路 四数之和思路 总结 前言 本专栏的上篇,讲述了双指针的一些基础的算法习题 今天我们来学习更进一步的双指针用法吧 其实也是大相径庭,和前面的差不多&…...
系统安全阶段练习真题(高软44)
系列文章目录 系统安全阶段练习真题 文章目录 系列文章目录前言一、真题总结 前言 本节就是系统安全的阶段练习真题,带答案与解析。 一、真题 总结 就是高软笔记,大佬请略过!...
Mybatis Generator 使用手册
第一章 什么是Mybatis Generator? MyBatis Generator Core – Introduction to MyBatis Generator MyBatis生成器(MBG)是MyBatis框架的代码生成工具。它支持为所有版本的MyBatis生成代码,通过解析数据库表(或多个表&…...
Android中AIDL和HIDL的区别
在Android中,AIDL(Android Interface Definition Language) 和 HIDL(HAL Interface Definition Language) 是两种用于定义跨进程通信接口的语言。AIDL 是 Android 系统最早支持的 IPC(进程间通信࿰…...
Gazebo 启动时候配置物体
1. 准备模型 mkdir -p ~/.gazebo/models/table echo export GAZEBO_MODEL_PATH$HOME/.gazebo/models:$GAZEBO_MODEL_PATH >> ~/.bashrc source ~/.bashrc # 从https://github.com/osrf/gazebo_models下载模型 # 桌子 cd ~/.gazebo/models/table wget https://raw.github…...
展示深拷贝与移动语义的对比
定义 Buffer 类(含深拷贝和移动语义) #include <iostream> #include <chrono> #include <cstring>class Buffer { public:// 默认构造函数(分配内存)explicit Buffer(size_t size) : size_(size), data_(new in…...
STM32基础教程——对射式红外传感器计数实验
前言 对射式红外传感器介绍 对射式红外传感器是一种非接触式的距离检测器,主要由发射器和接收器两部分组成。发射器发出特定波长的红外光束,当物体阻挡了这条光束时,接收器无法接收到光线信号,从而产生一个开关信号来判断物体的存…...
Git与GitHub:理解两者差异及其关系
目录 Git与GitHub:理解两者差异及其关系Git:分布式版本控制系统概述主要特点 GitHub:基于Web的托管服务概述主要特点 Git和GitHub如何互补关系现代开发工作流 结论 Git与GitHub:理解两者差异及其关系 Git:分布式版本控…...
【时时三省】(C语言基础)赋值语句2
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 赋值运算符 赋值符号“”就是赋值运算符,它的作用是将一个数据赋给一个变量。如a 3的作用是执行一次赋值操作(或称赋值运算)。把常量3赋给变量a。也可以…...
服务器上通过ollama部署deepseek
2025年1月下旬,DeepSeek的R1模型发布后的一周内就火了,性能比肩OpenAI的o1模型,且训练成本仅为560万美元,成本远低于openAI,使得英伟达股票大跌。 下面我们来看下如何个人如何部署deepseek-r1模型。 我是用的仙宫云的…...
自动控制原理【知识点总结、复习笔记】
1.控制系统定义 控制系统是指通过监测和调整系统的行为,以达到预期目标的一套系统。它由一组相互关联的组件组成,这些组件协同工作,用于控制物理过程、机械设备、电子设备或其他系统。例如,一个简单的温控系统可以通过监测房间温…...
【AI】什么是Embedding向量模型?我们应该如何选择?
我们之前讲的搭建本地知识库,基本都是使用检索增强生成(RAG)技术来搭建,Embedding模型则是RAG的核心,同时也是大模型落地必不可少的技术。那么今天我们就来聊聊Embedding向量模型: 一、Embedding模型是什么? Embedding模型是一种将离散数据(如文本、图像、用户行为等)…...
openwrt路由系统------Linux 驱动开发的核心步骤
以下是 Linux 驱动开发的核心步骤,结合实践案例与注意事项,适合嵌入式设备(如 OpenWrt 路由器)开发: 一、驱动开发基本流程 1. 环境准备 工具链与内核源码 # 安装交叉编译工具链(如 ARM) sudo apt-get install gcc-arm-linux-gnueabihf# 获取目标内核源码(需匹配运行的…...
Educational Codeforces Round 7 F. The Sum of the k-th Powers 多项式、拉格朗日插值
题目链接 题目大意 求 ( ∑ i 1 n i k ) (\sum_{i1}^{n} i^k) (∑i1nik) m o d ( 1 0 9 7 ) mod(10^97) mod(1097) . 数据范围 : 1 ≤ n ≤ 1 0 9 1 \leq n \leq 10^9 1≤n≤109 , 0 ≤ k ≤ 1 0 6 0 \leq k \leq 10^6 0≤k≤106 . 思路 令 f ( n ) ∑ …...
学习笔记:利用OpenAI实现阅卷智能体
https://zhuanlan.zhihu.com/p/18047953492 ### 学习笔记:利用OpenAI实现阅卷智能体 #### 一、背景与需求 在各类考试中,选择题、判断题、填空题的阅卷相对简单,只需对比答案与作答是否一致。然而,简答题的阅卷较为复杂ÿ…...
进程的简要介绍
一.进程 1.概念:担当分配系统资源的实体 2.进程内核数据结构对象自己的代码和数据 或进程PCB(task_struct)自己的代码和数据 注1:PCB:操作系统中描述进程的结构体 2.进程的所有属性均可在task_struct中找到,管理进程其实就是…...
每日一题——乘积最大子数组
乘积最大子数组问题详解 问题描述示例约束条件 问题分析难点分析解题思路 代码实现代码说明 测试用例测试用例 1测试用例 2测试用例 3 总结 问题描述 给定一个整数数组 nums,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字&#x…...
HttpServletRequest 和 HttpServletResponse 区别和作用
一、核心作用对比 对象HttpServletRequest(请求对象)HttpServletResponse(响应对象)本质客户端发给服务器的 HTTP 请求信息(输入)服务器返回客户端的 HTTP 响应信息(输出)生命周期一…...
黄昏时间户外街拍人像Lr调色教程,手机滤镜PS+Lightroom预设下载!
调色介绍 黄昏时分有着独特而迷人的光线,使此时拍摄的人像自带一种浪漫、朦胧的氛围 。通过 Lr 调色,可以进一步强化这种特质并根据不同的风格需求进行创作。Lr(Lightroom)作为专业的图像后期处理软件,提供了丰富的调色…...
Docker Desktop 安装与使用详解
目录 1. 前言2. Docker Desktop 安装2.1 下载及安装2.2 登录 Docker 账号2.3 进入 Docker Desktop 主界面 3. Docker 版本查看与环境检查3.1 查看 Docker Desktop 支持的 Docker 和 Kubernetes 版本3.2 检查 Docker 版本 4. Docker Hub 和常用镜像管理方式4.1 使用 Docker Hub4…...
DeepSeek-R1与全光网络的医疗技术协同场景深度分析
一、DeepSeek-R1与全光网络的技术协同场景 1. 实时诊疗与数据交互 1. 实时诊疗与数据交互 1.1 场景示例分析 高带宽需求:医疗影像,尤其是CT和MRI影像,通常具有高分辨率和大数据量,要求医疗系统具备超高带宽来实时传输这些数据。全光网络,特别是基于华为F5G的解决方案,…...
热图回归(Heatmap Regression)
热图回归(Heatmap Regression)是一种常用于关键点估计任务的方法,特别是在人体姿态估计中。它的基本思想是通过生成热图来表示某个关键点在图像中出现的概率或强度。以下是热图回归的主要特点和工作原理: 主要特点 热图表示: 每个关键点对应一个热图,热图中的每个像素值…...
模型微调-基于LLaMA-Factory进行微调的一个简单案例
模型微调-基于LLaMA-Factory进行微调的一个简单案例 1. 租用云计算资源2. 拉取 LLaMa-Factory3. 安装依赖环境4. 启动 LLaMa-Factory 界面5. 从 Huggingface 下载模型6. 模型验证7. 模型微调 1. 租用云计算资源 以下示例基于 AutoDL 云计算资源。 在云计算平台选择可用的云计…...
shell的模拟实现 ─── linux第16课
在shell的命令行中输入命令,会有两种执行命令的途径 shell自己执行 shell创建子进程(fork ,exit ,waitpid,exec) ,子进程去执行 shell自己执行的命令是自建命令(bulit command) 子进程执行的是非自建命令 第一版只能维护命令行参数表创建子进程, 执行非内建命令 我们先创…...
Luna——为游戏添加音效
1、在GameManager中声明 public AudioSource audiosource; public AudioClip normalClip; public AudioClip battleClip; 2、在GameManager资产中挂载“Audio Source”组件,并将该组件挂载到资产脚本中的声明对象 这就可以根据不同场景的需要切换背景音乐了&#x…...
计算机视觉算法实战——老虎个体识别(主页有源码)
✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ 1. 领域介绍 老虎个体识别是计算机视觉中的一个重要应用领域,旨在通过分析老虎的独特条纹图案,自动识别和区…...
技术速递|GitHub Copilot Agent 模式(预览版)介绍
作者:Isidor Nikolic 翻译:Alan Wang GitHub Copilot Agent 模式(预览版)是 AI 辅助编码的最新进化。它作为一个自主的编程助手,可以根据你的指令执行多步骤的编码任务——分析代码库、读取相关文件、提出文件编辑建议…...
《安富莱嵌入式周报》第351期:DIY半导体制造,工业设备抗干扰提升方法,NASA软件开发规范,小型LCD在线UI编辑器,开源USB PD电源,开源锂电池管理
周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV16C95YEEZs 《安富莱嵌入式周报》第351期:DIY半导体…...
CSS—补充:CSS计数器、单位、@media媒体查询
目录 1. CSS计数器 嵌套计数器: 对列表元素: 2.单位 绝对长度: 相对长度: 3.media媒体查询 1. CSS计数器 CSS 计数器就像“变量”。变量值可以通过 CSS 规则递增(将跟踪它们的使用次数)。 如需使用…...
Phi-4-multimodal:图、文、音频统一的多模态大模型架构、训练方法、数据细节
Phi-4-Multimodal 是一种参数高效的多模态模型,通过 LoRA 适配器和模式特定路由器实现文本、视觉和语音/音频的无缝集成。训练过程包括多阶段优化,确保在不同模式和任务上的性能,数据来源多样,覆盖高质量网络和合成数据。它的设计…...
Leetcode::将水果放入篮子II(c++)
3477. 将水果放入篮子 II 提示 给你两个长度为 n 的整数数组,fruits 和 baskets,其中 fruits[i] 表示第 i 种水果的 数量,baskets[j] 表示第 j 个篮子的 容量。 你需要对 fruits 数组从左到右按照以下规则放置水果: 每种水果必…...
【C语言系列】字符函数和字符串函数
字符函数和字符串函数 一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2strlen函数模拟实现 四、strcpy的使用和模拟实现4.1strcpy函数4.2strcpy函数的模拟实现 五、strcat的使用和模拟实现5.1strcat函数5.2strcat函数的模拟实现 六、strcmp的使用…...
【计算机网络】深入解析 HTTP 协议的概念、工作原理和通过 Fiddler 抓包查看 HTTP 请求/响应的协议格式
网络原理— HTTP 1. 什么是HTTP? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议: HTTP 往往是基于传输层的 TCP 协议实现的 (HTTP1.0,HTTP1.1,HTTP2.0 均为TCP,HTTP3基于UDP实现) 我们平时打开一个网站,就是通过HTTP协议来…...
InDraw6.2.3 | 甾体、核苷、黄酮类化合物实现简称命名
导语 当化学家对着屏幕输入"2-amino-1,9-dihydro-6H-purin-6-one"时,隔壁生物学家可能正在搜索"鸟嘌呤";这种命名差异如同"火星文"与"地球语"的碰撞。现在,鹰谷InDraw 6.2.3版带着53种多环化合物的…...
AI Copilot——维新派的贾维斯,守旧派的墓志铭(程序员视角)
6500万年前的那颗陨石好像要落下来了 这一段时间,伴随着claude sonnet 3.7的发布 以及cursor,windsurf 等一众AI智能编辑器的涌现,社区的programming自媒体坐不住了,有一个观点已经快要溢出屏幕:程序员这个岗位要黄&a…...
c++ 接口/多态
目录 接口的通用定义 特点: C 中的接口 接口的作用 接口与抽象类的区别 什么是多态? 多态的类型 1. 编译时多态 2. 运行时多态 多态的实现原理 注意事项 在编程中,接口(Interface) 是一个抽象概念ÿ…...