【树-简单】111. 二叉树的最小深度

LeetCode111二叉树的最小深度 算法特点及适用场景特点利用递归的思想巧妙地将计算二叉树最小深度的问题分解为计算各个子树的最小深度问题,代码逻辑清晰简洁,符合二叉树这种具有递归结构的数据结构特点,易于理解和实现。通过合理地根据左右子树的情况来确定当前子树的最小深度,能够准确地计算出整棵二叉树的最小深度。时间复杂度为 ,在遍历二叉树节点计算最小深度方面具有较好的效率表现,只要二叉树的节点数量在可接受范围内,都能较快地得出二叉树的最小深度。适用场景。 阅读详情

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

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

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

示例 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

【代码】
在这里插入图片描述

class Solution:
    def minDepth(self, root: TreeNode) -> int:
        if not root:
            return 0
        min_depth=10**5+1
        depth=1
        queue=[root]
        while queue:
            sz=len(queue)
            for i in range(sz):
                node=queue.pop(0)
                if not node.left and not node.right:
                    min_depth=min(min_depth,depth)
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
            depth+=1
        return min_depth            

【写法2】
在这里插入图片描述

class Solution:
    def minDepth(self, root: TreeNode) -> int:
        if not root:
            return 0
        depth=1
        queue=[root]
        while queue:
            sz=len(queue)
            for i in range(sz):
                node=queue.pop(0)
                if not node.left and not node.right:
                    return depth
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
            depth+=1 
        return depth     

【写法3-深度优先】
在这里插入图片描述

class Solution:
    def __init__(self):
        self.depth=10**5+1
    def minDepth(self, root: TreeNode) -> int:
        if root and not root.left and not root.right:
            return 1
        elif not root:
            return 0
        min_depth =10**6
        if root.left:
            min_depth=min(self.minDepth(root.left),min_depth)
        if root.right:
            min_depth=min(self.minDepth(root.right),min_depth)
        return min_depth+1

【写法4-广度优先(推荐)】
在这里插入图片描述

class Solution:
    def __init__(self):
        self.depth=10**5+1
    def minDepth(self, root: TreeNode) -> int:
        if not root:
            return 0

        que = collections.deque([(root, 1)])
        while que:
            node, depth = que.popleft()
            if not node.left and not node.right:
                return depth
            if node.left:
                que.append((node.left, depth + 1))
            if node.right:
                que.append((node.right, depth + 1))
        
        return 0
AD元件库构建及维护之——DbLib公共元件库的使用教程 AD元件库构建及维护之——DbLib元件库的使用教程 阅读详情

相关推荐

虚拟机Ubuntu连接USRP

笔记本通过网线连接USRP。

xiaozir的博客 2310

二叉树的最小深度

二叉树的最小深度 题目: 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 输入:root = [3,9,20,null,null,15,7] 输出:2 示例 2: 输入:root = [2,null,3,null,4,null,5,null,6] 输出:5 解题思路:用BFS解决 /** * Definition for a binary tree node. * public class TreeNode { *

KobeSacre的博客 1234

LDA主题模型简介及Python实现

一、LDA主题模型简介 LDA主题模型主要用于推测文档的主题分布,可以将文档集中每篇文档的主题以概率分布的形式给出根据主题进行主题聚类或文本分类。 LDA主题模型不关心文档中单词的顺序,通常使用词袋特征(bag-of-word feature)来代表文档。词袋模型介绍可以参考这篇文章:文本向量化表示——词袋模型 - 知乎 了解LDA模型,我们需要先了解LDA的生成模型,LDA认为一篇文章是怎么形成的呢? LDA模型认为主题可以由一个词汇...

weixin_41168304的博客 20万+

LeetCode二叉树系列——144.二叉树的最小深度

刚刚我们说过了二叉树有两种存储方式顺序存储,和链式存储,顺序存储就是用数组来存,这个定义没啥可说的,我们来看看链式存储的二叉树节点的定义方式。intval;};大家会发现二叉树的定义和链表是差不多的,相对于链表,二叉树的节点里多了一个指针,有两个指针,指向左右孩子。这里要提醒大家要注意二叉树节点定义的书写方式。在现场面试的时候面试官可能要求手写代码,所以数据结构的定义以及简单逻辑的代码一定要锻炼白纸写出来。二叉树是一种基础数据结构,在算法面试中都是常客,也是众多数据结构的基石。...

w20001118的博客 1713

从芯片原厂到BSP工程师:技术转型与核心能力解析

嵌入式系统开发中,BSP(板级支持包)作为连接硬件与操作系统的关键层,其开发能力直接影响设备稳定性与性能。理解Linux内核架构(如内存管理、进程调度)和基础接口协议(I2C/SPI/USB)是BSP工程师的核心技能。在芯片验证与驱动开发场景中,多核异构系统调试与稳定性问题排查(如死机分析)展现了工程师的实战能力。随着物联网与智能设备发展,掌握从硬件适配到系统优化的全链路技术栈,成为职业发展的关键突破点。

weixin_36012152的博客 600

【纯干货分享】常用高速接口眼图模板合集

文章汇集了常见的高速接口的信号眼图测试模板技术要求,比如,LPDDR5/4、PCIe 5.0/4.0、USB、MIPI等等,方便工程师快速进行查询和使用。

一只豌豆象的博客 3119

13-二叉树最小深度-深度优先(DFS)

二叉树的最小深度是指从根节点到最近的的最短路径上的节点数。叶子节点是指没有子节点的节点。举个例子:1/ \2 34这棵树的最小深度是 2,因为从根节点1到叶子节点3的路径最短,只需要经过1和3两个节点。

m0_67213461的博客 1392

【47】软考软件设计师——全真模拟卷(下午题)|5道案例分析+答题模板+评分标准

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第47篇,属于**模块六:冲刺与模拟**第四篇,严格遵循软考下午题真题规范(5道案例分析题,150分钟,满分75分,45分及格),覆盖数据流图(DFD)、E-R图与关系模式、UML类图与用例图、算法设计与代码填空、设计模式应用五大核心题型。全文采用“真题级案例+分步答题模板+采分点明细+评分标准”的形式,每道题配套“审题技巧→解题步骤→规范作答模板→常见错误扣分点”,深度拆解案例分析题的得分逻辑,帮助考生掌握“按点踩分、规范表述、避坑扣分”的核心能力

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 689

111. 二叉树的最小深度【简单】【树】【DFS】

题目: 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:2 示例 2: 输入:root = [2,null,3,null,4,null,5,null,6] 输出:5 提示: 树中节点数的范围在 [0, 10^5] 内 -1000 <= Node.val <= 1000 思路: 注意:与1..

pre_eminent的JAVA学习园地 269

18年陕西省TI杯电赛无人机赛题视觉部分

更新: 相同任务另外两种不同的视觉方法: https://blog.csdn.net/qq_41895747/article/details/97613077 https://blog.csdn.net/qq_41895747/article/details/97614971 任务:识别前方的方框,无人机从方框中飞出去 视觉任务:识别特定方框,返回方框中心坐标 # -*- codin...

沉迷单车的追风少年 1506

YOLOv11改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计

实时检测器架构的轻量级设计GsConv。

Limiiiing的博客 2314

【LeetCode】C++ :简单题 - 树 111. 二叉树的最小深度

111. 二叉树的最小深度 难度简单426 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 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 &...

weixin_44566432的博客 347

如何使用支付宝订阅cursor会员?

Cursor被X收购后,订阅流程已更新,现支持国内支付宝支付。用户需在官网注册账号,选择套餐并填写中国地区信息,支付时扫码支付宝完成订阅。注意:订阅为自动续费,若仅试用一个月,务必在支付宝中关闭自动续费,避免扣费。新账号首月半价,建议注册新号以节省费用。

猿小白的博客 393

111. 二叉树的最小深度(简单 树 深度优先搜索 广度优先搜索 二叉树)

111. 二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 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 来源:力扣(LeetCode) 链接:htt

weixin_43942435的博客 115

lwip-2.0.3

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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

二叉树的最小深度踩坑

今天做题的时候做到leetcode 111,二叉树最小深度。 看了一眼以为可以秒杀(我太天真了) 写下如下代码 return root == null ? 0 : Math.min(minDepth(root.left),minDepth(root.right))+1; 然后。。。gg了 原因是 当存在这样左子树或者柚子树为空的情况下,使用如上代码输出为1,但1是有子节点的,所以不符合最小深...

Vince_Wang1的博客 277

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

111. 二叉树的最小深度

LeetCode 第 111 题是“二叉树的最小深度”。题目要求:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。这里的叶子节点是指没有子节点的节点。本题主要涉及树的遍历问题,核心模式是通过遍历二叉树来找到最小深度。由于需要找到从根节点到叶子节点的最短路径,因此可以使用深度优先搜索(DFS)或者广度优先搜索(BFS)来解决。深度优先搜索(DFS)广度优先搜索(BFS)以下是使用 C 语言实现的深度优先搜索的详细代码: 代码解释 TreeNode 结构体:定义了二叉树

qq_40844444的博客 756

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

力扣第111题:二叉树的最小深度

给定一个二叉树,找出其最小深度。是从根节点到最近的叶子节点的路径上的节点个数。是指没有子节点的节点。

weixin_48941116的博客 1222

【LeetCode】111. 二叉树的最小深度

本文探讨了二叉树最小深度的计算问题。关键点在于区分最小深度与最大深度的定义差异,特别是当树只有一侧子树时的处理方式。文章提出了两种主要解法:递归DFS和迭代BFS。递归DFS通过分情况处理空子树和叶子节点,确保正确计算路径长度;迭代BFS则利用队列实现层序遍历,找到第一个叶子节点即返回当前深度。两种方法时间复杂度均为O(n),但空间复杂度不同(递归O(h),BFS O(w))。文中还分析了典型边界情况,并强调必须到达真实叶子节点而非仅中间节点的注意事项。优化后的递归DFS代码简洁高效,是推荐解法。

qq_32019341的博客 1009

LeetCode第111题_二叉树的最小深度

给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。叶子节点是指没有子节点的节点。

qq_40263592的博客 1197

【111. 二叉树的最小深度 简单】

要注意计算二叉树的最小深度时的递归法细节,和计算最大深度时的递归法有很大不同。

yuan_2001_的博客 875

【LeetCode】第111题——二叉树的最小深度(难度:简单)

【LeetCode】第111题——二叉树的最小深度(难度:简单)题目描述解题思路代码详解注意点 题目描述 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:2 示例 2: 输入:root = [2,null,3,null,4,null,5,null,6] 输出:5 来源:力扣(LeetCode) 链接:https://leetco

Se7en_Dayz的博客 323

LeetCode 力扣 111. 二叉树的最小深度

题目描述(简单难度) 返回从根节点到叶子节点最小深度。 解法一 递归 和 104 题 有些像,当时是返回根节点到叶子节点的最大深度。记得当时的代码很简单。 public int maxDepth(TreeNode root) { if (root == null) { return 0; } return Math.max(maxDepth(root.le...

wind_liang的博客 944

【算法111】 二叉树的最小深度

题目描述:(来源于力扣111) 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 返回它的最小深度 2. 解法: 1)深度优先搜索法 首先分别计算左右子数的深度,然后分情况判断: 若左子树为空,返回右子树深度; 若右子树为空,返回左子树深度...

喜欢吃冰棍de谷利文君的博客 340

111 求二叉树的最小深度

LeetCode:111 求二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例: 给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 思路:类似于求二叉树的...

Turbo_Come的博客 297
上一篇: 【树-简单】100. 相同的树
下一篇: 【树-简单】剑指 Offer 55 - I. 二叉树的深度
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值