[Tree Breadth First Search] 二叉树的最大深度

DAY16:二叉树(五)二叉树最大深度+最小深度 例如上图中的节点20,深度是2(到根节点距离是2),节点7的深度就是3,到根节点距离为3个节点。这是因为在 C++ 中,函数的参数是按值传递的,所以对参数的修改不会影响到函数调用之外的代码。注意,这道题中提到的最小深度,是根节点到最近的叶子节点的距离,也就是说,如下图所示的树,最小深度应该是3而不是1!或者在调方法参数的时候传入参数+1,这样就不改变变量本身的值,就不需要还原,效果是一样的。,而后序的遍历顺序是左右中,可以把叶子节点的信息返回给父节点,父节点直接在叶子节点高度信息+1即可。 阅读详情

leetcode 104、Maximum Depth of Binary Tree、难度easy

0. 题干

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3,9,20,null,null,15,7],

在这里插入图片描述

返回它的最大深度 3 。

1. 代码

// 广度优先:使用队列

class Solution {
public:
    int maxDepth(TreeNode* root) {
         if(root==NULL) return 0;
         queue<TreeNode*> q;
		 
         if (root)
			q.push(root);
	
         int level=0;
         while(q.size())
         {
             level++;
             int num=q.size();
             for(int i=0;i<num;i++)
             {
                TreeNode* cur=q.front();
                q.pop();
                if(cur->left) 
					q.push(cur->left);
                if(cur->right) 
					q.push(cur->right);
             }
         }
         return level;         
    }
};

2. 简述代码流程

先存根节点root到队列里面去,然后level值为1;
找根节点的左右结点存到队列里面,level值为2,
此时发现值为9的结点的左右孩子不存在,那就别管,再此进入for(int i=0;i<num;i++)
循环,把结点值为20的左右孩子存到队列里面,当然之前要pop掉值为20的结点,
此时level的值为3,发现值为15、以及值为7的结点都没有左右孩子,依次pop掉,
队列为空,跳出while(q.size()),代码运行结束,返回 level值为3。

【顾邦小讲堂】第二十四期 电源环路测试从入门到精髓:一文掌握环路测试原理与电压注入点选择依据 电源环路测试是评估开关电源、线性电源等闭环系统稳定性的核心手段,直接关系到电源的稳定性、输出精度、动态响应、抗干扰能力甚至可靠性 阅读详情

相关推荐

用workbuddy自定义Skill:手把手搭建AI炒股分析助手

AI Agent正成为个人投资研究的重要工具,而Skill作为行为规范,能让AI输出保持稳定与专业。在AI Agent应用中,很多人分不清Skill与Agent的区别:Agent负责目标拆解与执行,Skill则固化分析流程与输出模板。借助本地工作台workbuddy,用户可自定义Skill,实现从市场环境检查到财务排雷的五段式分析。通过调低温度参数、设定数据验证规则,该方案能有效避免大模型凭空编造数据,帮助个人投资者快速完成基本面体检、资金面观察与风险清单生成。本文基于一套可直接套用的配置与一个月实测,展示

weixin_29038537的博客 520

104. 二叉树的最大深度

一道简单题,但是错几次,感觉很有价值,便记了下来。

云杉木屋 4775

加湿器方案-DLT8M04TS-杰力科创

基本组成: 一个触摸按键、一组RGB灯、一个雾化片、一个充电IC。 产品功能: 第一次上电光机状态,RGB红/绿/红灯依次闪烁灭; 2、按键功能:短按开关机和三档喷雾工作模式,第一次短按持续喷雾,短按第二次喷3S,停3S,短按第三次关闭喷雾模式,依次循环; 在喷雾或是不喷雾的状态下长按1.5S RGB灯渐变,一直循环,第二次长按当前灯光闪烁一下常亮,第三次长按关机; 3、持续喷雾定时5小时自动断电,间歇喷雾定时10小时自动断电,若在间歇工作时有切换为持续喷雾,那间歇喷雾的...

JLKCsz的博客 512

104. 二叉树的最大深度(简单)

Leetcode链接:104. 二叉树的最大深度 题目描述 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 题解 DFS解法 /** * Definition for a binary tree node. * public class T

二进制杯莫停的博客 1415

内网(极空间)搭建gitlab跳板机转发端口及域名配置

然后,回头尝试用内网地址+15022 clone,成功,用公网的ip+15222 clone失败,那就是定位到时nginx转发的问题了。首先想到的就是 git clone是通过ssh的22端口进行下载的,那就需要打通22端口,则又配置22端口的nginx转发。然后,我通过ssh命令,做一个端口转发,以实现内网穿透,将服务端口链接到跳板机上。然后穿透到阿里云服务器跳板机的端口,只能内网访问,需要用nginx做个转发,才能用公网ip进行访问。然后,如上,我的80端口,映射15080,22端口映射15022。

God丶Davide的博客 6074

昆仑通态屏幕制作(连载1)---接触篇

写在开始 背景:最近出了做QT、LORA和4G,还做了一个屏幕。以前做了一个迪文的串口屏幕,发现网上的教程很多,所以连载就不更新了,并且迪文屏幕的设置什么的比较简单,应该从网上都能找到对应的教程。而现在用的昆仑通态的屏幕属于嵌入式屏幕,至于为啥叫嵌入式,也不是很明白,反正就是需要用这个屏幕,嵌入式不嵌入式不重要了。重要的是能用,并且能实现串口屏幕不能实现的功能。所以选定昆仑通态的一款屏幕。 文章语言:我比较习惯用比较糙的语言介绍做的东西,有时候不太准备,但是为了方便理解,还请大家谅解。用...

weixin_45426095的博客 6736

算法日记day 17(二叉树的最大、最小深度)

由于完全二叉树不存在只有右子树而没有左子树的情况,因此我们可以通过判断左右子树最左边的节点和最右边节点的深度差来判断该二叉树中节点的数量,这样很大一部分中间的节点就没必要再次遍历,时间复杂度自然就小于O(n)了。采用后序遍历的方法,一层一层的去判断子节点与父节点的距离,可以将一整个二叉树转变为一个个独立开来的二叉树,然后分别判断距离,在逐渐返回上一层,直到返回到根节点为止。的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。

m0_74980681的博客 1764

从零搭建:C#+YOLOv8质检系统(从相机选型到上位机部署,附完整开发流程与源码)

后来换成45°斜射的条形光源,光线从侧面打在引脚上,弯曲处会形成暗区,缺陷边缘立刻清晰——光源预算别省,我这套光源+支架才600块,比换相机划算多了。前阵子帮一家电子厂做连接器引脚缺陷检测,他们原来靠2个师傅用放大镜看,每天8小时最多检5000个,0.2mm的针脚弯曲还经常漏检,不良品流到客户那里,单月罚款就超5万。做质检第一步不是挑设备,是先明确“要检测多大的缺陷”——比如我要检的连接器引脚,直径0.5mm,允许的最大弯曲是0.2mm,这直接决定相机分辨率。,后面C#就用这个模型推理。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1267

二叉树的最大深度

二叉树的最大深度 求解二叉树的最大深度的三种方式 方式一:使用广度优先遍历 广度优先遍历 又叫层次遍历,从上往下对每一层依次访问,在每一层中,从左往右(也可以从右往左)访问结点,访问完一层就进入下一层,直到没有结点可以访问为止。二叉树的广度优先遍历的非递归的通用做法是采用队列。 思路加代码 方式二:使用深度优先遍历 广度优先遍历 思路加代码 方式三:使用递归的解法 广度优先遍历 思路加代码 ...

qq_46589658的博客 1715

tar解压报错 gzip: stdin: unexpected end of file tar: Unexpected EOF in archive

错误现象: [root@centos7-xinsz08 ~]# tar xf prometheus-2.7.2.linux-amd64.tar.gz gzip: stdin: unexpected end of file tar: 归档文件中异常的 EOF tar: 归档文件中异常的 EOF tar: Error is not recoverable: exiting now 错误原因排查 ...

互联网老辛 2万+

【OpenCV】图像的像素直方图 图像特征点 cv::FAST cv::ORB ORB_SLAM2::ORB

文章目录图像直方图代码实现cv::FAST和cv::ORB 检测图像特征点cv::FAST和cv::ORB 检测图像特征点代码实现ORB_SLAM2::ORB和自己实现ORB图像特征点检测效果对比ORB_SLAM2::ORB和自己实现ORB图像特征点检测效果对比代码实现 图像直方图代码实现 图像是由不同数值(颜色)的像素构成的,像素值在图像中的分布情况是图像的重要属性,可以用直方图修改图像的外观,标识图像的内容,检测图像中特定的物体或纹理。 单通道灰度图像中每个像素都有一个 0(黑色)-255(白色)的整

小秋 AI SLAM 入门实战教程 2510

面试经典算法系列之二叉树8 -- 二叉树的最大深度

公众号:阿Q技术站。

qq_44630255的博客 742

基于改进Unet的多场景水果图像分割与分类研究

本文针对复杂场景下的水果图像分割问题,提出了一种改进Unet模型。通过构建包含8类水果、3种成熟度及多种干扰场景的数据集,采用ResNet50与MobileNetV3作为骨干网络,并在跳跃连接层集成CBAM注意力机制。实验表明,改进模型在测试集上达到91.6%的mIoU,推理速度提升23%,特别在重叠水果和低光照场景表现突出。研究为农业视觉检测提供了有效解决方案。

AI的内部世界的博客 304

二叉树层序遍历:BFS核心思想与LeetCode实战解析

广度优先搜索(BFS)是一种基础的图遍历算法,其核心思想是逐层探索节点,确保先访问的节点其邻居也优先被访问。这一原理通过队列(Queue)这一先进先出的数据结构实现,在二叉树场景下即表现为层序遍历。掌握BFS不仅有助于理解树的结构,更是解决图论问题、进行状态空间搜索的关键技术。在算法面试和工程实践中,层序遍历常被用于求解二叉树深度、寻找最短路径、序列化等场景。本文以LeetCode高频面试题为例,深入解析层序遍历的标准实现与常见变体,如锯齿形遍历、寻找每层最大值等,并探讨其与深度优先搜索(DFS)的关联及性

weixin_30394981的博客 348

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Go语言实现广度优先搜索(BFS)算法详解

广度优先搜索(BFS)是图与树遍历的基础算法,采用队列数据结构实现层级扩展,广泛应用于最短路径查找、社交网络分析等场景。Go语言凭借goroutine并发模型和slice动态数组特性,能高效实现BFS算法。通过channel处理队列操作可提升并发性能,而类型安全机制避免了指针越界等常见问题。在工程实践中,Go实现的BFS相比其他语言通常减少30%代码量,特别适合处理大规模图数据遍历、迷宫路径求解等任务。本文以二叉树层级遍历和社交网络好友推荐为案例,展示如何利用Go的并发优势优化传统BFS实现。

weixin_30896511的博客 351

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

数据结构核心考点与高频陷阱全解析:从线性结构到图论与排序查找

数据结构是计算机科学的基石,它通过特定的逻辑关系组织数据,以提升程序的存储与处理效率。其核心原理在于根据数据特性和操作需求,选择或设计合适的逻辑结构(如线性表、树、图)与物理存储方式,并在此基础上实现高效的算法。掌握数据结构对于优化程序性能、解决复杂工程问题具有关键价值,广泛应用于数据库索引、网络路由、编译器设计及各类算法竞赛与面试场景。本文聚焦于数据结构中的高频考点与易错点,深入剖析数组、链表、栈、队列等线性结构的本质差异与操作代价,对比二叉搜索树、平衡树与堆的特性,详解图的表示方法与遍历策略(DFS/B

ciqiaofu0192的博客 434

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

树上的BFS(Tree Breadth First Search)

Pattern: Tree Breadth First Search,树上的BFS 介绍来自链接:https://www.zhihu.com/question/36738189/answer/908664455 作者:穷码农 ​ 这种模式基于宽度优先搜索(Breadth First Search (BFS)),适用于需要遍历一颗树。借助于队列数据结构,从而能保证树的节点按照他们的层数打印出来。打印完当前层所有元素,才能执行到下一层。所有这种需要遍历树且需要一层一层遍历的问题,都能用这种模式高效解决。 ​

weixin_43989102的博客 1872

二叉树的深度和高度

给定一个二叉树, 找出其最大深度。二叉树的深度为根节点到最远叶子节点最长路径上的节点数。如二叉树 [ 3, 9, 20, null, null, 15, 7 ]的最大深度为3:先看一个简单的情况:对于节点 3, 最大深度自然是左右子节点 + 1, 左右子节点都有可能为空, 但只要有一个, 树的最大高度就是 1 + 1 = 2。然后再增加几个节点:而对于节点 3, 则是左右子树深度最大的那个然后 + 1, 具体谁更大, 并不关心。

Mamba_Stan的博客 1万+

代码随想录算法训练第16天|●104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数

(2<<leftDepth)是2向右移leftDepth相当于2的leftDepth+1次方。●104.二叉树的最大深度 559.n叉树的最大深度。我先用后序遍历(左右中)来计算树的高度。222.完全二叉树的节点个数。111.二叉树的最小深度。

m0_68520551的博客 101

二叉树(六):二叉树的最大深度与最小深度

一、二叉树的最大深度 二叉树的最大深度 二叉树的最大深度可以通过递归法,层次遍历和深度优先遍历实现,但是最简单最容易的就是递归法。 1、递归法 1)确定递归三要素 递归函数的返回值和参数:返回值为当前节点的最大深度,参数为当前节点 递归函数的单层逻辑:当前节点的最大深度 = 1 + 左子树或右子树的最大深度 递归函数的终止条件:当前节点为空时,当前节点最大深度为0 2)递归方法代码 class Solution { public: //递归参数及返回值 int maxDepth(Tre

qq_42138662的博客 9093

每日一题——二叉树的最大深度

二叉树的深度就等于根节点这个1层加上左子树和右子树深度的最大值,即。而每个子树我们都可以看成一个根节点,使用递归即可求的深度。

吴尼玛cs 349

二叉树9:二叉树的最大深度

找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

Ge_yangwen的博客 701

【Leetcode】二叉树的最大深度

题目描述: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明:叶子节点是指没有子节点的节点。 示例: 给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度3 。 解题思路: 递归求解吧。 CppAC代码: /** ...

麦芽雪冷萃 6018

二叉树题解——二叉树的最大深度【LeetCode】两种方法实现

最大深度是指从根节点到最远叶子节点的最长路径上的节点数。递归地计算左右子树的最大深度,然后返回“更深的一侧 + 当前层”作为整体深度。这是一个典型的后序遍历问题,因为只有等左右子树处理完毕后,才能计算当前节点的高度。这两个递归实现都通过“后序遍历 + 层高累计”的方式求解二叉树最大深度。一个精简直接、一个易读明确,本质相同,都是标准的二叉树深度问题递归写法,时间和空间复杂度均为线性级别。每一轮 while 循环处理一层节点,处理完后就将深度 +1,最终的层数就是最大深度。

chao_789的博客 1210

Queue使用【算法笔记】

import java.util.LinkedList; import java.util.Queue; // 压入元素(添加):add()、offer() // 相同:未超出容量,从队尾压入元素,返回压入的那个元素。 // 区别:在超出容量时,add()方法会对抛出异常,offer()返回false // // 弹出元素(删除):remove()、poll() // 相同:容量大于0的时候,删除并返回队头被删除的那个元素。 // .

qq_41048982的博客 284

二叉树的最大深度(LeetCode 104)

每次拓展下一层的时候,不同于广度优先搜索的每次只从队列里拿出一个节点,我们需要将队列里的所有节点都拿出来进行拓展,这样能保证每次拓展完的时候队列里存放的是当前层的所有节点,即我们是一层一层地进行拓展,最后我们用一个变量 height 来维护拓展的次数,该二叉树的最大深度即为 height。具体而言,在计算当前二叉树的最大深度时,可以先递归计算出其左子树和右子树的最大深度,然后在 O(1) 时间内计算出当前二叉树的最大深度。叉树的「最大深度」是指从根节点到最远叶子节点的最长路径上的节点数。

Doublelv 的博客专栏。 1389
上一篇: [C++基础] 字符串后面添加字符
下一篇: [Tree Breadth First Search] 二叉树的最小深度
1byte ≠ 8bit
博客等级 码龄8年 7242粉丝 170原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值