记录算法笔记(2025.5.13)二叉树的最大深度

给定一个二叉树 root ,返回其最大深度。

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

示例 1:

**输入:**root = 3,9,20,null,null,15,7

**输出:**3

示例 2:

**输入:**root = 1,null,2

**输出:**2

提示:

  • 树中节点的数量在 [0, 104] 区间内。
  • -100 <= Node.val <= 100

思路: //一层一层去遍历,将根节点先存入队列,深度+1,然后判断如果有左子树或者右子树不为空则将其存入队列,深度+1,根节点再出队列,第二次还是遍历这个队列就是将根节点的左子树判断这个的左子树和右子树以及根节点的右子树判断这个的左子树和右子树(队列中有就执行),就是每层节点找下面层所有节点,并将该层节点退队列,下面层所有节点存入队列,直到队列中没节点了,就结束

代码:C#

public class Solution {

public int MaxDepth(TreeNode root) {

if(root==null)

return 0;

Queue<TreeNode> queue=new Queue<TreeNode>();//创建一个队列

int depth=0;//深度为0

queue.Enqueue(root);//将根节点存入队列

while(queue.Count>0)//循环结束条件为队列中节点数量小于等于0

{

depth++;//只要进入该循环一次深度就+1

int len=queue.Count;//这里需要int出队列长度

for(int i=0;i<len;i++)//不能不int len,直接写queue.Count,因为i增加循环中队列大小在减小,容易出现有队列没遍历完全的情况

{

TreeNode newnode=queue.Dequeue();

if(newnode.left!=null)

{

queue.Enqueue(newnode.left);

}

if(newnode.right!=null)

{

queue.Enqueue(newnode.right);

}

}

}

return depth;

}

}

相关推荐
lvwangshu26 分钟前
图论:LCA、树的直径、树的重心、二分图与 Tarjan 缩点
算法·图论
302wanger1 小时前
干与湿:AI 拿走脑力之后,人剩下什么
算法
计算机编程-吉哥2 小时前
脑肿瘤MRI智能识别系统:基于深度学习的像素级脑肿瘤语义分割平台【计算机毕业设计选题推荐】
人工智能·python·深度学习·算法·毕业设计·课程设计·大数据毕业设计选题推荐
自小吃多2 小时前
高云FPGA ModelSim中的仿真
笔记·嵌入式硬件·fpga开发
用户204937554952 小时前
端侧语音部署踩坑:模型能跑不等于终端真的能用
后端·算法
shehuiyuelaiyuehao3 小时前
算法39,位运算,消失的两个数字
java·数据结构·算法
ZiLing3 小时前
2026 ROS 2 Lyrical 踩坑实录(一):编译与依赖——rosdep、现代 CMake 与 CMake 4.x
算法
小刘在重生~3 小时前
Java 异常体系完整笔记
java·笔记·python
Murphy_lx3 小时前
1124. 表现良好的最长时间段
c++·算法
aramae3 小时前
模拟实现strstr函数(C语言)
c语言·开发语言·算法