Leetcode.111 二叉树的最小深度

题目链接

Leetcode.111 二叉树的最小深度 easy

题目描述

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

最小深度是从 根节点最近叶子节点最短路径上的节点数量

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

示例 1:

在这里插入图片描述

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

示例 2:

输入:root = [2,null,3,null,4,null,5,null,6]
输出:5

提示:

  • 树中节点数的范围在 [ 0 , 1 0 5 ] [0, 10^5] [0,105]
  • − 1000 < = N o d e . v a l < = 1000 -1000 <= Node.val <= 1000 1000<=Node.val<=1000

解法:递归

我们要求的是 叶子结点根结点最短路径

我们设 l l l r r r 分别是 当前结点 r o o t root root 的左子节点到根结点的最短路径长度当前结点 r o o t root root 的右子节点到根结点的最短路径长度

  • 如果 l = = 0 l ==0 l==0,返回 r + 1 r + 1 r+1
  • 如果 r = = 0 r == 0 r==0,返回 l + 1 l + 1 l+1
  • 否则返回 m i n { l , r } + 1 min\{l , r \} + 1 min{l,r}+1

时间复杂度: O ( n ) O(n) O(n)

C++代码:

class Solution {
public:
    int minDepth(TreeNode* root) {
        if(root == nullptr) return 0;
        int l = minDepth(root->left);
        int r = minDepth(root->right);

        if(l == 0) return r + 1;
        else if(r == 0) return l + 1;
        
        return min(l , r) + 1;
    }
};

Python代码:


class Solution:
    def minDepth(self, root: Optional[TreeNode]) -> int:
        if root == None:
            return 0
        l = self.minDepth(root.left)
        r = self.minDepth(root.right)

        if l == 0:
            return r + 1
        elif r == 0:
            return l + 1
        else:
            return min(l , r) + 1            

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

车载网络 - Autosar网络管理 - 网络管理简介

一、什么是CAN网络管理及它的作用 现在的车辆是由大量的ECU节点组成的&#xff0c;为了能使各ECU能够正确并及时地进行CAN通信&#xff0c;需要有一套机制来统一协调总线上各节点的休眠唤醒&#xff0c;这套机制就是CAN网络管理&#xff08;NM&#xff09;。 网络管理的目的是保…

项目2:后端管理员项目结构初始化

项目2&#xff1a;后端管理员项目结构初始化 1.创建数据库和表 2.初始化父项目 3.初始化项目模块 4.初始化core核心模块&#xff08;代码生成器&#xff09; 项目2&#xff1a;后端管理员项目结构初始化 1.创建表 创建数据库 编码使用utf-8 sql语句 /*Navicat Premium …

18_I.MX6ULL_I2C实验

目录 I2C简介 起始位 停止位 数据传输 应答信号 I2C写时序 I2C读时序 I2C多字节读写时序 相关寄存器 AP3216C简介 实验源码 I2C简介 I2C是最常用的通信接口,众多的传感器都会提供I2C接口来和主控相连,比如陀螺仪、加速度计、触摸屏等等。所以I2C是做嵌入式开发必须…

【高项】项目人力资源管理,沟通管理与干系人管理(十大管理)

【高项】项目人力资源管理&#xff0c;沟通管理与干系人管理&#xff08;十大管理&#xff09; 文章目录1、人力资源管理1.1 什么是人力资源管理&#xff1f;1.2 如何进行人力资源管理&#xff1f;&#xff08;过程&#xff09;1.3 人力资源管理工具1.4 人力资源管理文件2、沟通…

语雀笔记备份导出

参考: https://www.cnblogs.com/ssslinppp/p/17020303.htmlhttps://github.com/yuque/yuque-exporterhttps://zhuanlan.zhihu.com/p/582287220https://www.yuque.com/duzh929/blog/ocffqghttps://www.yuque.com/hijiaobu/datalife/onf6sy#BKajf 现在需要超级管理员,若是没有超级…

【华为机试真题详解JAVA实现】—整数与IP地址间的转换

目录 一、题目描述 二、解题代码 一、题目描述 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成 一个长整数。 举例:一个ip地址为10.0.3.193 每段数字 相对应的二进制数 10 000…

GDPU C语言 天码行空6

1. 数组顺序查找 ⭐ 语法题 #include<stdio.h>int main() {int n,x,i;int a[102];scanf("%d", &n);for (i 0; i < n; i){scanf("%d", &a[i]);}scanf("%d", &x);int idx -1;//记录x的最大下标int max 0;// 记录大于x的数…

如何写一个优质高效的网络项目实施方案?这篇文章值得收藏!

随着互联网技术的不断发展&#xff0c;网络项目的实施成为了许多企业和组织的重要任务。网络项目实施方案是指在进行网络项目实施时&#xff0c;为了保障项目的顺利进行&#xff0c;达到项目目标和交付要求&#xff0c;所制定的详细计划和操作指南。一个好的网络项目实施方案对…

Unity Game FrameWork—模块使用—对象池分析

官方说明&#xff1a;提供对象缓存池的功能&#xff0c;避免频繁地创建和销毁各种游戏对象&#xff0c;提高游戏性能。除了 Game Framework 自身使用了对象池&#xff0c;用户还可以很方便地创建和管理自己的对象池。 下图是Demo中用到的对象池&#xff0c;所有的实体以及UI都使…

C++11多线程:原子操作std::automic-用于多个线程之间共享的变量。

系列文章目录 文章目录系列文章目录前言一、std::automic二、使用步骤1.代码案例总结前言 原子操作std::automic的基本概念和用法。 一、std::automic std::atomic来代表原子操作&#xff0c;std::automic是个类模板。其实std::atomic这个东西是用来封装某个类型的值的。 1.1…

echarts tooltip文字太长换行

tooltip文字太长换行&#xff0c;设置了宽度也没有换行&#xff0c;加上一句&#xff1a; extraCssText: ‘max-width:300px; white-space:pre-wrap’, 没加之前是这样&#xff1a; 加上之后 extraCssText: ‘max-width:300px; white-space:pre-wrap’, tooltip: {trigger: &…

Mybatis(六)缓存

缓存是Mybatis中非常重要的特性&#xff0c;Mybatis的一级缓存基于SqlSession实现&#xff0c;二级缓存基于Mapper实现。 一、缓存的使用 一级缓存默认开启&#xff0c;Mybatis提供了一个配置参数localCacheScope来控制一级缓存的级别&#xff0c;该参数的取值可以是session、…

主动配电网故障恢复的重构与孤岛划分统一模型研究【升级版本】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

CesiumForUnreal实现多边形裁剪3dTileset效果

文章目录 1.实现目标2.实现过程3.原理浅析4.参考资料1.实现目标 基于CesiumForUnreal插件的Cartographic Polygon Actor在Runtime运行时环境下实现对地形3DTileset的多边形裁剪效果,GIF动图如下: 2.实现过程 在Editor中的具体操作过程可以参考CesiumForUnreal官方裁剪地形的…

小巧型温湿度传感器

小巧型温湿度传感器是一种小巧的温湿度传感器&#xff0c;其作用是测量周围环境的温度和湿度&#xff0c;以及确定这些数据是否处于合适的范围内。这种传感器已经被广泛应用于医疗、工业、家居、冷链运输等领域&#xff0c;成为现代工业中不可或缺的一部分。小巧型温湿度传感器…

前置知识——Linux网络虚拟化

Linux网络虚拟化 信息是如何通过网络传输被另一个程序接收到的&#xff1f; 我们讨论的虚拟化网络是狭义的&#xff0c;它指容器间网络。 好了&#xff0c;下面我们就从 Linux 下网络通信的协议栈模型&#xff0c;以及程序如何干涉在协议栈中流动的信息来开始了解吧。 Linux…

全能PDF:Pdfium.Net SDK 2023-03-18 Crack

Pdfium.Net SDK 是领先的 .Net 库&#xff0c;用于生成、操作和查看可移植文档格式的文件。我们提供高级 c# / VB.Net API&#xff0c;用于在 WEB 服务器或任何其他服务器系统上动态创建 pdf&#xff0c;并在现有桌面或 WEB 应用程序中实现“另存为 PDF”功能。 入门&#xff1…

汽车网络管理的意义和分类

网络管理的意义&#xff1a; 1. 工作状态协同&#xff1a; 在任意多ECU节点网络工作时&#xff0c;对同一网络ECU的通信状态做统一的管理&#xff0c;保证各个ECU节点可以在条件满足的时候进入低功耗模式 2. 信息交互协同&#xff1a; 可以根据NM报文状态判定特定ECU的运行状态…

ESP32设备驱动-MPL3115A2压力传感器驱动

MPL3115A2压力传感器驱动 文章目录 MPL3115A2压力传感器驱动1、MPL3115A2介绍2、硬件准备3、软件准备4、驱动实现1、MPL3115A2介绍 MPL3115A2 是一款紧凑型压阻式绝对压力传感器,具有 I2C 数字接口。 MPL3115A2 具有 20 kPa 至 110 kPa 的宽工作范围,该范围涵盖了地球上的所…

CarSim仿真快速入门(二十四)-CarSimSimulink联合仿真中的输入和输出IO接口

导入和导出数组用于Simulink以外的外部仿真工具。同样的设置也用于LabVIEW、ASCET、FMI/FMU以及可能用MATLAB、Python和其他语言编写的自定义程序。 在所有这些情况下,I/O通道。导入和I/O通道。输出屏幕用于配置VS数学模型以满足外部仿真工具的通信要求。 I/O 通道:输出 输…
最新文章