104. 二叉树的最大深度【 力扣(LeetCode) 】

news2024/9/22 3:41:01

零、LeetCode 原题


104. 二叉树的最大深度

一、题目描述

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

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

二、测试用例

示例 1:

在这里插入图片描述

输入:root = [3,9,20,null,null,15,7]
输出:3

示例 2:

输入:root = [1,null,2]
输出:2

提示:

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

三、解题思路

  1. 基本思路:
      深度优先和广度优先两种方式。深度优先使用递归来做,广度优先使用队列来做。【不推荐广度,设计比较复杂】
  2. 具体思路:
    • 深度优先:引入子树概念,当前树高等于最高的子树树高+1;空结点树高为 0 ;
    • 广度优先:遍历每层结点,然后计算层数;
      • 把每层结点出列,将其子结点入列,每遍历到新的一层,层数+1;

四、参考代码

时间复杂度: O ( n ) \Omicron(n) O(n)
空间复杂度: O ( h ) \Omicron(h) O(h)【h 是树高,递归最高深度就是树高】

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left),
 * right(right) {}
 * };
 */
class Solution {
public:
    int maxDepth(TreeNode* root) {
        if (root == nullptr)
            return 0;

        return max(maxDepth(root->left), maxDepth(root->right)) + 1;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2135218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[git] MacBook 安装git

文章目录 1.Mac Git 安装2. 开发者工具安装 CommandLineTools安装完成&#xff0c;错误解决 3. git 账户配置账户设置生成秘钥git 或者 gitee 仓库添加公钥查看全局账户命令多账户设置config文件测试连接clone到本地 1.Mac Git 安装 Mac一般自带Git工具&#xff0c;也就是说已…

监听html元素是否被删除,删除之后重新生成被删除的元素

/*** 监听水印是否清除和修改*/ export function watermarkClear() {// 添加水印的盒子let box: any document.querySelector(.dplayer-video-wrap)// 水印let watermark: any document.querySelector(.dplayer-logo)// 观察器的配置&#xff08;需要观察什么变动&#xff09…

css scrollbar-width: none 隐藏默认滚动条

.table-box{ flex: 1; overflow-y: scroll; scrollbar-width: none;} scrollbar-width: none; 隐藏默认滚动条

计算机二级自学笔记(程序题1部分)

(1)b fun函数内a数组作为参数&#xff0c;下方提供了b函数作为中间数组所以在这进行初始化 (2)2 第二个循环内将a数组分为1-27与27-55两部分&#xff0c;1-27存放在b数组的奇数位&#xff0c;27-55存放在b数组的偶数位 (3)a[k] 将b数组传递回数组a nm mn 已经有的参数…

使用 PyTorch 构建 MNIST 手写数字识别模型

引言 MNIST 数据集是一个经典的机器学习数据集&#xff0c;包含了 70,000 张手写数字图像&#xff0c;其中 60,000 张用于训练&#xff0c;10,000 张用于测试。每张图像都是 28x28 像素的灰度图像&#xff0c;并且已经被居中处理以减少预处理步骤。本文将介绍如何使用 PyTorch…

剪辑必备,6个可白嫖的视频素材网站。

找视频素材就上这6个网站&#xff0c;免费下载&#xff0c;赶紧收藏好&#xff01; 1、菜鸟图库 视频素材下载_mp4视频大全 - 菜鸟图库 菜鸟图库网素材非常丰富&#xff0c;网站主要以设计类素材为主&#xff0c;高清视频素材也很多&#xff0c;像风景、植物、动物、人物、科技…

Redis(主从复制、哨兵模式、集群)概述及部署测试

目录 一、Redis 主从复制 1.1、Redis 主从复制概念 1.2、主从复制的作用 1.3、主从复制流程 1.4、搭建Redis 主从复制 二、Redis 哨兵模式 2.1、Redis 哨兵模式概念 2.2、哨兵模式原理 2.3、哨兵模式的作用 2.4、哨兵模式的结构 2.5、故障转移机制 2.6、主节点的选…

性能诊断的方法(四):自下而上的资源诊断方法和发散的异常信息诊断方法

关于性能诊断的方法&#xff0c;我们可以按照“问题现象—直接原因—问题根源”这样一个思路去归纳。我们先从问题的现象去入手&#xff0c;包括时间的分析、资源的分析和异常信息的分析。接下来再去分析产生问题现象的直接原因是什么&#xff0c;这里我们归纳了自上而下的资源…

从安装ffmpeg开始,把一个视频按照每秒30帧fps剪切为图片

ffmpeg -i demo.mp4 -vf fps1 -start_number 0 %5d.jpg没有ffmpeg 的去官网下载&#xff0c; ffmpeg.org/download.html 下载好之后&#xff0c;解压进入bin文件夹 复制当前路径&#xff0c;下一步 配置环境 进入本机环境变量&#xff0c;把地址添加到path中 之后进入anacond…

Vue - 详细介绍vue-qr在线生成二维码组件(Vue2 Vue3)

Vue - 详细介绍vue-qr在线生成二维码组件&#xff08;Vue2 & Vue3&#xff09; 在对于二维码生成中有许多组件&#xff0c;下面介绍关于自定义比较高的vue-qr组件&#xff0c;能自定义设置背景颜色、背景图片、背景Gif图、实点和空白区的颜色、中心Logo的图片和边距。 一…

为什么企业可以通过数据产品实现商业价值

管理者们通常希望可以通过数据洞悉更精准的商业趋势。 根据 Gartner 2023 年的调查显示&#xff0c;有69%的数据分析师或数据管理者们&#xff0c;仍在努力通过数据分析&#xff0c;希望实现可衡量的投资回报率&#xff0c;而数据产品是实现这一难题的重要解决方案之一。 什么…

USBCANFD卡在新能源BMS上位机的应用

使用简明教程&#xff1a;插入一个视频 USBCANFD-401是一款高性能的USB转双路CANFD/LIN的CANFD盒&#xff0c;支持单路CNA(FD)和LIN转USB通信。 通过USB接口快速接入CANFD或LIN通道&#xff0c;使接入CAN/CANFD/LIN网络变得轻松便捷。该设备采用金升阳电源模块和信号隔离芯片&…

GAMES101(2~3作业)

作业2 基础题目&#xff1a; 栅格化&#xff1a;在屏幕绘制一个实心三角形&#xff0c;函数 rasterize_triangle(const Triangle& t)&#xff0c;需要找出当前三角形的边界框&#xff0c;然后遍历像素&#xff0c;查找当前像素是否在三角形内static bool insideTriangle(…

ESP32开发 -- 初识

一、ESP32官网 ESP32官网 二、文档下载 用的是ESP32-S3-MINI-1&#xff0c;官网查看相关文档 相关文档 三、技术规格书 四、开发板 参看&#xff1a;ESP32-S3 系列开发板 ESP32-S3-MINI-1 相关开发板的示例代码&#xff0c;后续可以参考。 Espressif Systems esp-dev-…

9天也能养成ins账号!超详细操作指南

Instagram&#xff0c;作为全球最受欢迎的社交媒体平台之一&#xff0c;为跨境电商卖家们提供了一个展示产品、吸引潜在客户的绝佳舞台。然而&#xff0c;受限于ins的规则&#xff0c;要想在这个平台上进行产品的宣传并非易事。 这就是为什么我们需要精心培养一个ins账号&#…

Linux(4)--CentOS8虚拟机下联网

文章目录 1. 背景2. VmWare配置3. 电脑网络配置4. 配置虚拟机网络5. 重启联网 1. 背景 安装CentOS后&#xff0c;尚不能联网&#xff0c;没有网络就不好上网&#xff0c;所以先解决上网问题。 2. VmWare配置 打开VmWare&#xff0c;点击编辑-虚拟网络编辑器&#xff0c;选择…

PyCharm使用ipynb文件交互式绘图

PyCharm配置 Jupyter Notebook 这个文章很全 PyCharm配置 Jupyter Notebook plotly方法 终端安装&#xff1a; pip install plotlyimport plotly.graph_objects as go import numpy as np# 示例数据 X np.linspace(-5, 5, 100) Y np.linspace(-5, 5, 100) X, Y np.meshg…

GNSS的数据样例

武汉大学的数据地址&#xff1a; ftp://igs.gnsswhu.cn/pub/whu/phasebias obit 文件夹下存放的是卫星相关的文件 姿态&#xff1a; 、精密轨道 ERP CLK bias 文件 观测量域的偏差

RWKV作者对OpenAI 发布 o1 系列模型的看法,很深刻

知乎&#xff1a;PENG Bo 链接&#xff1a;https://www.zhihu.com/question/666991594/answer/3624168868 大家都知道长期CoT可以提升性能&#xff0c;而且很快我们会看到其它家的例子&#xff0c;这是最后的low-hanging fruit&#xff0c;因为只需合成大量训练数据&#xff0…

DDR3AXI4接口读写仿真

前文已经介绍了DDR3和AXI4总线的相关知识&#xff0c;我们知道MIG ip核除了可以生成native接口还能生成AXI4接口&#xff0c;今天就练习一下将AXI4接口的DDR3打包成FIFO。首先我们生成一个AXI4接口的MIG ip核&#xff0c;其余步骤与Native接口的ip核相同&#xff0c;如果我们勾…