Leetcode111 二叉树的最小深度

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

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

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

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

方法1:递归

方法一:深度优先搜索
思路及解法

首先可以想到使用深度优先搜索的方法,遍历整棵树,记录最小深度。

对于每一个非叶子节点,我们只需要分别计算其左右子树的最小叶子节点深度。这样就将一个大问题转化为了小问题,可以递归地解决该问题。

实现代码:

public int minDepth(TreeNode root) {
    if(root == null)
        return 0;

     if (root.left == null && root.right == null) {
            return 1;
    }
    int minDepth = Integer.MAX_VALUE;
    if(root.left != null){
        minDepth = Math.min(minDepth,minDepth(root.left));
    }
    if(root.right != null){
        minDepth = Math.min(minDepth,minDepth(root.right));
    }
    return minDepth + 1;

}

方法2:迭代

方法二:广度优先搜索(BFS Breadth--first-search)
思路及解法

同样,我们可以想到使用广度优先搜索的方法,遍历整棵树。

当我们找到一个叶子节点时,直接返回这个叶子节点的深度。广度优先搜索的性质保证了最先搜索到的叶子节点的深度一定最小。

public int minDepth(TreeNode root) {
    if(root == null)
        return 0;
    Queue<TreeNode> q = new LinkedList<>();
    int depth = 1;
    q.offer(root);
    while(!q.isEmpty()){
        int size = q.size();
        for(int i = 0; i < size;i++){
            TreeNode cur = q.poll();
            if(cur.left == null && cur.right == null){
                return depth;
            }
            if(cur.left != null){
                q.offer(cur.left);
            }
             if(cur.right != null){
                q.offer(cur.right);
            }

        }
        depth += 1;

    }
    return depth;

}

中文顶刊《会计研究》文本分析技术最新进展总结盘点 会计研究》是由中华人民共和国财政部主管、中国会计学会主办的国家一级学术期刊,为会计领域中文顶级期刊。随着大数据技术的日益成熟, 社交网络类文本 、上市公司披露类文本、媒体报道类文本、 其他类文本 、网络搜索数据、P2P 网络借贷文 本与分析师报告等文本数据逐渐成为财务会计的研究素材。 阅读详情

相关推荐

如何在OBS中添加实时时间戳:Lua脚本配置教程(附效果展示)

本文详细介绍了如何在OBS中通过Lua脚本配置实时时间戳功能,包括环境准备、脚本获取、安装配置及高级定制。适用于直播和视频录制场景,提供精准回溯和风格自定义,支持多平台适配和性能优化,是专业制作的必备技巧。

day7的博客 1039

111. 二叉树的最小深度

111. 二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. DFS 首先可以想到使用深度优先搜索的方法,遍历整棵树,记录最小深度。 对于每一个非叶子节点,我们只需要分别计算其左右子树的最小叶子节点深度。这样就将一个大问题转化为了小问题

pukka的博客 568

GD32的低功耗模式:睡眠、深度睡眠与待机模式

GD32F4xx提供三种主要低功耗模式,功耗逐级降低:睡眠模式 (Sleep Mode)关闭CPU时钟,保持外设运行任意中断/事件唤醒深度睡眠模式 (DeepSleep Mode)关闭CPU和大部分外设时钟需特定唤醒源(外部中断、RTC等)待机模式 (Standby Mode)最低功耗,仅备份域维持供电仅支持复位、RTC、WKUP引脚唤醒。

波风水门的博客 2276

二叉树简单 LeetCode111. 二叉树的最小深度 NC234 二叉树的最小深度

111. 二叉树的最小深度 描述 给定一颗节点数为N的二叉树,求其最小深度。最小深度是指树的根节点到最近叶子节点的最短路径上节点的数量。 (注:叶子节点是指没有子节点的节点。) import java.util.*; public class Solution { public int run (TreeNode root) { if(root == null){ return 0; } int l = run(root.lef

31楼下小黑的博客 626

基于微信小程序的垃圾分类系统,附源码

垃圾分类小程序管理员功能有个人中心,管理员管理,意见反馈管理,视频类型管理,垃圾类型管理,新闻类型管理,论坛信息管理,环保视频管理,环保知识管理,垃圾信息管理,环保新闻管理,用户管理,知识问答试卷管理,试题管理,测试管理,轮播图管理。用户可以在微信小程序上面注册登录,查看各种环保信息和垃圾信息,还可以参加知识问答等操作。垃圾分类小程序的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。

Java徐师兄的博客 2074

VisionPro 9.0 QuickBuild里用C#脚本调用Halcon 23.11模型,保姆级图文配置流程

本文详细介绍了如何在VisionPro 9.0 QuickBuild环境中使用C#脚本调用Halcon 23.11深度学习模型,提供从环境配置到模型集成的保姆级图文教程。重点解决图像格式转换、许可证配置等工业视觉检测中的常见问题,帮助开发者快速实现高效、稳定的视觉检测流水线部署。

weixin_27027459的博客 432

leetcode 111 学习笔记(求树深度,递归迭代)

文章目录111. 二叉树的最小深度问题描述思路 1、递归法 2、迭代法 111. 二叉树的最小深度 问题描述 传送门 思路 直觉上好像和求最大深度差不多,其实还是差不少的。 遍历顺序上是后序遍历(因为要比较递归返回之后的结果),但在处理中间节点的逻辑上,最大深度很容易理解,最小深度可有一个误区,如图: 题目中说的是: 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 注意是叶子节点。 1、递归法 ①确定递归函数的参数和

晓梦林的博客 370

游戏开发实战:如何在Unity中实现六边形网格地图(附完整代码)

本文详细介绍了在Unity中实现六边形网格地图的完整开发流程,从数学原理到实战代码。涵盖三种主流坐标系转换方法、距离计算算法对比、网格生成与渲染技巧,以及高级功能如网格高亮、寻路算法和性能优化策略。适合策略游戏、战棋类游戏开发者提升地图系统开发效率。

652

求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。

题目描述: 求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。 解题思路: 1.检测当前的根节点是否为空,为空则压根没有最小深度return null,如果不为空,我们新建一个arraylist 储存所有叶节点的depth,同时我们从根节点开始dfs(call DFS function). 2.DFS function 内,我们首先需要检测当前收到的节点是不是叶节点,如果是,我们就把他的深度放进arraylist里。 如果不是叶节点,我们继续用dfs循环往下找他的左孩子和右

inferno_devil的博客 466

腾讯面试——机器学习岗面试总结

先写合并两个有序数组,接着写合并n个有序的数组,假设总共m个数,讲了一个思路两两合并直到只剩下一个数组,分析一下时间复杂度(MlogN),面试官不满意,然后想了一下说了另一个思路,用n个指针开始指向各个数组的首端,用一个优先队列维护他们的最小值,每次拿出最小值的指针然后插入该指针的下一个值。感觉跟二面面试官聊得还是挺开心的,他详细地介绍了他们部门所做的业务,然后问了一下什么时候能来实现,我说只能暑假七八两个月,他觉得有点晚,这样子不利于转正,有些人都实习半年的,回去讨论一下,正式批之前给我答复。

FPGA/MATLAB学习教程/源码/项目合作开发 1229

机器人全局路线规划导读

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对全局路线规划导读做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 1504

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

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

wind_liang的博客 944

基于STM32、HAL库的ATMXT1066TD触摸屏控制器驱动程序设计

0x11) // 0x11是ATMXT1066的家族ID。// 最多支持10点触摸。// 足够存储10点触摸数据。

corlin6688的博客 164

力扣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

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

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

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

李霁明的博客 300

VC中sqlite的使用

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

Leetcode 111. 二叉树的最小深度

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

思过留痕 556

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

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

weixin_48941116的博客 1222

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

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

T型人小付的博客 352

#力扣 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

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

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

qq_42246695的博客 321

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

Leetcode111. 二叉树的最小深度

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

会流泪de鱼的博客 146
上一篇: Leetcode104 二叉树的最大深度
下一篇: Leetcode287 寻找重复数
魑魅魍魉114
博客等级 码龄10年 165粉丝 240原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值