力扣每日一题111:二叉树的最小深度

news2024/11/19 5:52:13

题目

简单

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

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

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

示例 1:

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

示例 2:

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

提示:

  • 树中节点数的范围在 [0, 105] 内
  • -1000 <= Node.val <= 1000

面试中遇到过这道题?

1/5

通过次数

685.3K

提交次数

1.3M

通过率

54.0%

方法一:广度优先搜索

根节点的深度为1,从根节点开始搜索,每次搜索一层深度+1,若是搜索某一层时,发现了叶子节点,说明该叶子是层数最低的叶子,就返回该叶子的深度。

class Solution {
public:
    int minDepth(TreeNode* root) {
        if(!root) return 0;
        queue<TreeNode*> pq;
        int depth=0;
        pq.push(root);
        while(!pq.empty())
        {
            depth++;
            int n=pq.size();
            for(int i=0;i<n;i++)
            {
                TreeNode *p=pq.front();
                pq.pop();
                if(!p->left&&!p->right) return depth;
                if(p->left) pq.push(p->left);
                if(p->right) pq.push(p->right);
            }
        }
        return depth;
    }
};

方法二:广度优先搜索

树的最小深度=min(左子树的最小深度,右子树的最小深度)+1。

叶子结点的深度为1,空节点的深度为0。

这种方法我没写,下面是官解。

class Solution {
public:
    int minDepth(TreeNode *root) {
        if (root == nullptr) {
            return 0;
        }

        if (root->left == nullptr && root->right == nullptr) {
            return 1;
        }

        int min_depth = INT_MAX;
        if (root->left != nullptr) {
            min_depth = min(minDepth(root->left), min_depth);
        }
        if (root->right != nullptr) {
            min_depth = min(minDepth(root->right), min_depth);
        }

        return min_depth + 1;
    }
};

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

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

相关文章

银行职员向媒体投稿发文章我找到了好方法

作为一名基层银行的媒体联络专员,我的日常工作中有一项至关重要的任务,那就是代表我所在的支行向各大媒体投稿,传播我们的金融服务、产品动态以及社会责任实践。起初,这项看似简单的工作却成了我职业生涯中的一大挑战。传统的邮件投稿方式,不仅耗时费力,而且审核流程严格,稿件从…

python 和 MATLAB 都能绘制的母亲节花束!!

hey 母亲节快到了&#xff0c;教大家用python和MATLAB两种语言绘制花束~这段代码是我七夕节发的&#xff0c;我对代码进行了简化&#xff0c;同时自己整了个python版本 MATLAB 版本代码 function roseBouquet_M() % author : slandarer% 生成花朵数据 [xr,tr]meshgrid((0:24).…

杨辉三角的打印

题目内容&#xff1a; 在屏幕上打印杨辉三角。 思路&#xff1a; 首先我们通过观察发现&#xff0c;每一步的打印都与行列数有关&#xff0c;中间的数据由这一列和上一行的前一列数据控制。所以我们可以使用二维数组进行操作&#xff1a; &#xff08;&#xff11;&#xff…

在k8s中部署hadoop后的使用,包括服务端及客户端(客户端的安装及与k8s服务的对接)

&#xff08;作者&#xff1a;陈玓玏&#xff09; 在https://blog.csdn.net/weixin_39750084/article/details/136744772?spm1001.2014.3001.5502和https://blog.csdn.net/weixin_39750084/article/details/136750613?spm1001.2014.3001.5502这两篇文章中&#xff0c;说明…

Redis + OpenResty 多级缓存

多级缓存 初识 OpenResty OpenResty - 开源官方站 基于 Nginx的高性能 Web 平台&#xff0c;用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。 具备Nginx的完整功能基于Lua语言进行扩展&#xff0c;集成了大量精良的 Lua 库、第三方模块允…

AlibabaCloud微服务下的链路追踪系统实战详解

&#x1f680; 作者 &#xff1a;“二当家-小D” &#x1f680; 博主简介&#xff1a;⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人&#xff0c;8年开发架构经验&#xff0c;精通java,擅长分布式高并发架构,自动化压力测试&#xff0c;微服务容器化k…

【深耕 Python】Quantum Computing 量子计算机(3)重要数学公式一览

写在前面 往期量子计算机博客&#xff1a; 【深耕 Python】Quantum Computing 量子计算机&#xff08;1&#xff09;图像绘制基础 【深耕 Python】Quantum Computing 量子计算机&#xff08;2&#xff09;绘制电子运动平面波 正文 偏微分&#xff1a; 交换关系&#xff…

MATLAB 三维空间中在两点之间等间隔插入多个点 (67)

MATLAB 三维空间中在两点之间等间隔插入多个点 (67) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 用于加密直线点云,具体为根据给定的直线端点,沿着该直线方向,插入多个点,从而加密。具体方法和效果如下所示: 二、算法实现 1.代码 代码如下(示例): % 定…

数据的输入和输出

早期的总线系统 为了解决通信的问题、主板上铺设了一条公共线路、各个设备都连接到这条线路上、不管谁要和谁通信、都能使用它来传输、这条线路就是总线。 总线上有CPU、内存、鼠标、键盘、硬盘、网卡、声卡、显卡等… 说是一条总线、实际上是包含了传输数据的数据总线、传输…

【C++】继承 — 继承的引入、赋值切片详细讲解

前言 我们知道C语言是一门面向对象编程的语言&#xff0c;而面向对象编程有三大特性&#xff0c;它们分别是&#xff1a; 封装继承多态 目录 1. 继承的概念及定义1.1继承的概念1.2继承的定义格式1.3 继承的使用 2 基类和派生类对象赋值转换3 继承中的作用域3.1 派生类对象的存…

YOLOv9中模块总结补充|RepNCSPELAN4详图

专栏地址&#xff1a;目前售价售价69.9&#xff0c;改进点70 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;助力高效涨点&#xff01;&#xff01;&#xff01; 1. RepNCSPELAN4详图 RepNCSPELAN4是YOLOv9中的特征提取-融合模块&#xff0c;类似前几…

【Java基础】设计模式——单例设计模式

单例设计模式&#xff08;Singleton Design Pattern&#xff09;是一种创建型设计模式&#xff0c;它确保⼀个类有且只有⼀个实例&#xff0c;并提供一个全局访问点来访问这个唯一实例。 单例模式主要解决的是&#xff0c;⼀个全局使⽤的类频繁的创建和消费&#xff0c;从⽽提…

信通院智能体标准发布,实在智能牵头编写

4月28日&#xff0c;由人工智能关键技术和应用评测工业和信息化部重点实验室、中国信息通信研究院&#xff08;以下简称&#xff1a;中国信通院&#xff09;人工智能研究所共同主办的“人工智能”高质量发展研讨会顺利召开&#xff0c;会上中国信通院正式发布全国首个Agent&…

Java12基础(Package包 作用域 String字符串)

目录 一. Package包 import关键字 命名规范 二. 作用域 三. String字符串(进阶) 创建方式: 内存情况: 1. 字符串的搜索 2. trim()方法 3. 替换字符串 4. 分割字符串 5. 拼接字符串 6. 格式化字符串 7. 类型转换 8. 转换为char[ ]字符数组 9. 字符编码 10. Str…

抖店内卷严重,平台规则繁琐,商家如何应对这种现状?

我是王路飞。 随着抖音的快速发展和扩张&#xff0c;抖音电商版块也在不断演进玩法和提高门槛。 然而也正是走的太快了&#xff0c;导致很多商家已经有些跟不上平台的繁琐规则。 压力更大的是&#xff0c;抖音电商的内卷逐渐严重&#xff0c;很多人被迫成为了“六边形战士”…

Vulstack红队评估(一)

文章目录 一、环境搭建1、网络拓扑2、web服务器(win7)配置3、域控&#xff08;winserver2008&#xff09;配置4、域内机器&#xff08;windows 2003&#xff09;配置5、调试网络是否通常 二、web渗透1、信息搜集2、端口扫描3、目录扫描4、弱口令5、phpmyadmin getshell日志gets…

OPC :快速上手

本系列为OPC技术的快速上以及持续研究和技术实战专栏&#xff0c;将不定期更新。 本章节提供OPC系列技术博文的快速导航。 《OPC服务器简介和入门介绍》 《物联网平台如何为OPC服务器创造新生命力》 《OPC服务器开发之WtOPCSvr——开发文档&#xff08;1&#xff09;》 《OPC服…

Linux 磁盘管理命令fdisk mount umount mkfs mkfs.ext2

文章目录 3.Linux 磁盘管理命令3.4 fdisk&#xff1a;磁盘分区案例练习 3.5 mount&#xff1a;挂载文件系统案例练习 3.6 umount&#xff1a;卸载文件系统案例练习 3.7 mkfs&#xff1a;建立各种文件系统案例练习 3.8 mkfs.ext2&#xff1a;建立一个 Ext2/Ext3 文件系统案例练习…

番外篇 | YOLOv8改进之在C2f中引入MSBlock模块(来源于YOLO-MS) | 轻量化网络结构

前言:Hello大家好,我是小哥谈。YOLO-MS是一种基于YOLO(You Only Look Once)的目标检测算法,它利用多尺度特征图提取和融合的方式来检测不同尺度的物体。YOLO-MS在准确率和速度方面都有很好的表现,特别适用于实时场景下的物体检测。在YOLO-MS提出的一种针对于实时目标检测…

Python | Leetcode Python题解之第70题爬楼梯

题目&#xff1a; 题解&#xff1a; class Solution:def climbStairs(self, n: int) -> int:a, b 1, 1for _ in range(n - 1):a, b b, a breturn b