Leetcode 111. 二叉树的最小深度

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

题目

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

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

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

在这里插入图片描述

解答

解法一:递归

具体如下:

  1. 如果当前结点为空,返回 0
  2. 如果左子树是空,返回右子树的最小深度 + 1
  3. 如果右子树是空,返回左子树的最小深度 + 1
  4. 如果左子树和右子树都不为空,返回二者最小的深度 + 1
代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int minDepth(TreeNode root) {
        if(root == null) return 0;
        if(root.left == null) return minDepth(root.right) + 1;
        if(root.right == null) return minDepth(root.left) + 1;
        return Math.min(minDepth(root.left), minDepth(root.right)) + 1;
    }
}
结果

在这里插入图片描述

解法二:队列 + BFS

按照层序遍历。

第一个叶子结点所在的层级就是整棵树的最小深度。

代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int minDepth(TreeNode root) {
        if(root == null) return 0;

        int minDepth = 1;
        LinkedList<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        while(!queue.isEmpty()) {
            int size = queue.size();
            while(size -- > 0) {
                TreeNode node = queue.poll();
                if(node.left == null && node.right == null) return minDepth;
                
                if(node.left != null) {
                    queue.offer(node.left);
                }
                
                if(node.right != null) {
                    queue.offer(node.right);
                }
            }
            
            minDepth ++;
        }
        
        return minDepth;
    }
}
结果

在这里插入图片描述

【经典算法】LeetCode 111 二叉树的最小深度(Java/C/Python3/Go实现含注释说明,Easy) 以下是使用深度优先搜索(DFS)和广度优先搜索(BFS)两种方式实现二叉树最小深度计算的总结表格。请注意,这里我们只对比DFS和BFS两种算法在解决二叉树最小深度问题时的特点,不涉及具体语言实现。方式优点缺点时间复杂度空间复杂度其他DFS代码相对简洁可能会遍历不必要的节点O(n)O(h),h为树的高度适用于树不平衡的情况BFS直观且易于理解需要使用队列,可能增加代码复杂度O(n)O(n)适用于树平衡或接近平衡的情况DFS优点。 阅读详情

相关推荐

【简单】力扣算法题解析LeetCode111:二叉树的最小深度

本文介绍了如何计算二叉树的最小深度,即从根节点到最近叶子节点的最短路径节点数。关键点在于正确处理单子树情况,避免错误计算非叶子节点深度。采用BFS层级遍历算法,按层检查节点,首次遇到叶子节点时立即返回当前深度,确保最优时间复杂度O(N)和空间复杂度O(N)。代码使用队列实现层级遍历,通过levelSize跟踪每层节点数,高效处理边界情况如空树和退化链表树。该解法在LeetCode上表现优异,执行用时1ms,内存消耗61.7MB,适用于大规模树结构。

ylumwd的博客 441

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

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

wind_liang的博客 944

【ISP图像处理】Demosaic去马赛克技术演进与边缘优化策略

本文深入解析了ISP图像处理中的Demosaic(去马赛克)技术。从Bayer阵列原理出发,梳理了从双线性插值、Hamilton-Adams边缘导向算法到利用通道相关性与自相似性的技术演进历程,并重点探讨了针对边缘与纹理伪影的优化策略,为工程实践中的算法选型与硬件协同设计提供了专业指导。

weixin_29091445的博客 387

力扣LeetCode #111 二叉树的最小深度(MinDepth)

- 题目描述 给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 提示: 叶子节点是指没有子节点的节点。 树中节点数的范围在 [0, 105] 内 -1000 <= Node.val <= 1000 来源:LeetCode - 示例 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:2 示例 2: 输入:root = [2,null,3,null,4,null,5,null,6] 输出:5 - 思路分析 递归求出

weixin_49155948的博客 380

数理逻辑1 -- 命题演算1

一直对逻辑的东西很感兴趣,尤其最近做的东西和AI相关,因此下定决心系统地学习数理逻辑。这些笔记并不是严谨的描述,只是作为一些概念的快速参考,以及加入一些个人认为好玩的公式、定理和推导。 简单来说,数理逻辑系统是由一串“符号”组成的系统,基本元素是那一堆“符号”,由“符号”组成“式子”。逻辑系统并不关心“式子”是否对错,只关心“式子”是否存在,也即是假定存在某些“式子“,再确定”推导规则“(Rule

Jason渣神的专栏 1830

PostgreSQL中idle in transaction状态的5个隐藏危害及实战解决方案

本文深入剖析了PostgreSQL中`idle in transaction`连接状态的五大隐藏危害,包括内存与锁泄漏、VACUUM受阻导致表膨胀、事务ID加速消耗、连接池资源耗尽以及增加故障排查复杂度。文章提供了基于`pg_stat_activity`视图的监控方法、识别高危事务的SQL脚本,并给出了从数据库参数调优(如设置`idle_in_transaction_session_timeout`)到应用层编码规范与连接池配置的完整实战解决方案。

zzz56的博客 234

LeetCode——111. 二叉树的最小深度(递归)

文章目录111. 二叉树的最小深度题目**结构体**1、递归1**思想**代码**2、递归2**思想**代码** 111. 二叉树的最小深度 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 给定一个二叉树,找出其最小深度。 题目** 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的

李霁明的博客 300

STM32CubeMX和华为LiteOS Studio开发STM32

传统的STM32的开发通常使用Keil/IAR这类开发软件,随着物联网时代的到来,传统嵌入式的发展不断向物联网方向靠拢,而Keil/IAR这类开发软件无法满足IoT一站式的开发,华为LiteOS Studio结合STM32CubeMX可以快速,高效地进行物联网开发,本文提供一种开发思路及环境的配置方法。...

weixin_45680600的博客 2832

Leetcode 111. 二叉树的最小深度

Leetcode 111. 二叉树的最小深度 难度:简单 用法:DFS 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 题目的重点在于...

思过留痕 557

CTFshow-pwn入门-前置基础pwn32-pwn34

CTFshow-pwn入门-前置基础pwn32-pwn34

你们de4月天的博客 1130

YOLOv8目标出入计数部署:讲解C#使用ONNX检测模型进行目标出入计数 可运行完整实例

代码、步骤、讲解完整,可一键运行,效果如下:车辆出入计数人员出入计数。

Limiiiing的博客 79

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

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

weixin_48941116的博客 1222

2 中望CAD二次开发-绘制图形(ZRX C++)

本文讲解中望CAD二次开发,关于块的概念及基本图形的绘制

cilvsuanna的博客 411

【每日力扣Leetcode】111-计算一个二叉树的最小深度

力扣题库111,计算一个二叉树的最小深度。 题目链接点这里。 文章目录题目描述解题思路初始答案改进答案注意事项 题目描述 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 解题思路 本题思路比较简单,利用DFS,迭代从下至上深度依次加1即可。 要注意的

T型人小付的博客 352

辉芒微教程第七篇《PWM与PWM3调节LED灯的亮度》

这个其实就是PR3L = 128设置的,由于我们刚刚寄存器设置了8位模式,其设置的范围就是0-255,而128/255≈50%左右,因此PR3L就是我们的占空比调节的寄存器,我们可以通过它来调节占空比,大家可以试试它占空比设置10%,30%,60%来看看它的不同效果,灯的亮度是肯定不一样的,如果有条件的朋友,可以购买一款逻辑分析仪去看他的占空比。平平无期的这个东西有什么东东用,貌似是没什么用,只是一个概念而已,是不是不同设备可以设置1秒,3秒,10秒的周期就行?但是它占空比为什么是50%,怎么得来的?

qq_41809823的博客 825

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

#力扣 LeetCode111. 二叉树的最小深度 @FDDLC

题目描述: 111. 二叉树的最小深度 - 力扣(LeetCode) (leetcode-cn.com) Java代码一: class Solution { //树中节点数的范围在 [0, 105] 内 public int minDepth(TreeNode root) { if(root==null)return 0; if(root.left==null&&root.right==null)return 1; //叶结点 .

LiuXingchang的博客 408

WINCC7.3破解文件

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

[每日一题]Leetcode 111 二叉树的最小深度

Leetcode 111 二叉树的最小深度题目描述解题思路python代码官方DFS代码官方BFS代码 题目描述 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 解题思路 1、 直接深度优先遍历,并在每个叶子节点处进行比较保存最小深度。 仔

qq_42246695的博客 321

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

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

qq_40263592的博客 1197

力扣(LeetCode) 111: 二叉树的最小深度 - 解法思路

给定一棵二叉树,找到它的最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。最小深度用 BFS 最快:层序遍历遇到的第一个叶子就是答案。DFS 也可以,但无法像 BFS 那样早停。

Yao H. Wang's Blog 281

LeetCode 111:二叉树的最小深度(java)

LeetCode 111:二叉树的最小深度(java) 题目: 解答: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val...

樊凯的博客 268

leetcode 111. 二叉树的最小深度(js)

leetcode 111. 二叉树的最小深度(js)题目代码 题目 二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:2 示例 2: 输入:root = [2,null,3,null,4,null,5,null,6] 输出:5 代码 var minDepth = function(root) { // let mi

wszhang_的博客 428

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

【代码】力扣-111.二叉树的最小深度。

qh991207的博客 158

leetcode 111. 二叉树的最小深度

111. 二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例: 给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 1.递归写法 四个出口条件: 1.此时参数...

fang156239305的博客 177

Leetcode111. 二叉树的最小深度

Leetcode111. 二叉树的最小深度 题目: 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7],         3         /  \ &nb...

会流泪de鱼的博客 146

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

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { publ...

izhxxx的博客 203

LeetCode 111. 二叉树的最小深度

题目链接:LeetCode 111. 二叉树的最小深度 题意: 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 解题思路: 使用BFS查看层次 /** * Definition for a binary tree node. * class TreeNode { * public $val = null; * public $left = null; * publ...

error311的博客 234
上一篇: Leetcode 110. 平衡二叉树
下一篇: Leetcode 112. 路径总和
一纸浮萍
博客等级 码龄9年 11粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值