LeetCode做题笔记-Q111.二叉树的最小深度

二叉树的层序遍历/后序遍历(leetcode104二叉树的最大深度、111二叉树的最小深度)(华为OD悄悄话、数组二叉树) 给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。本题可以使用前序(中左右),也可以使用后序遍历(左右中),使用前序求的就是深度,使用后序求的是高度。二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始)二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数或者节点数(取决于高度从0开始还是从1开始) 阅读详情

Q111.二叉树的最小深度

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

示例 1:
在这里插入图片描述
输入:root = [3,9,20,null,null,15,7]
输出:2

可以使用深度优先和广度优先完成

class Solution {
    public int minDepth(TreeNode root) {
        // 深度优先(递归)
        int min = Integer.MAX_VALUE;
        if (root == null) {
            return 0;
        }
        if (root.left == null && root.right == null) {
            // 叶子节点返回1
            return 1;
        }
        if (root.left != null) {
            // 左节点不为空,取左节点的深度与当前最小深度的较小值
            min = Math.min(minDepth(root.left), min);
        }
        if (root.right != null) {
            // 右节点不为空,取右节点的深度与当前最小深度的较小值
            min = Math.min(minDepth(root.right), min);
        }
        return min + 1;
    }
}
class Solution {
    public int minDepth(TreeNode root) {
        // 广度优先(队列) 队列+while+for循环的模板
        if (root == null) {
            return 0;
        }
        Queue<TreeNode> liTreeNodes = new LinkedList<>();// 定义队列
        liTreeNodes.offer(root);// 把root放入队列
        int level = 0;
        while (!liTreeNodes.isEmpty()) {// 队列非空
            level++;
            int cnt = liTreeNodes.size();// 这里不能把liTreeNodes.size()放到循环条件中,因为在每次循环中大小会变化
            for (int i = 0; i < cnt; i++) {
                // 遍历队列
                TreeNode node = liTreeNodes.poll();// 取出一个节点
                if (node.left == null && node.right == null) {
                    return level;// 为叶子节点时直接返回
                }
                if (node.left != null) {
                    liTreeNodes.offer(node.left);// 放入左节点
                }
                if (node.right != null) {
                    liTreeNodes.offer(node.right);// 放入右节点
                }
            }
        }

        return level;
    }
}
前端算法 === 力扣 111 二叉树的最小深度 DFS和BFS都是解决这个问题的有效方法。DFS的优点是代码简单,但可能在某些情况下效率不如BFS。BFS通常更直观,因为它逐层遍历树,而且对于这个问题,BFS可以更快地找到最小深度,因为它会在找到第一个叶子节点时立即停止搜索。然而,BFS需要额外的存储空间来存储队列。根据具体问题和场景,你可以选择适合的方法。 阅读详情

相关推荐

二叉树的最大/最小深度(C++ leetcode104.11)

104. 二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 解法1:递归 - 深度优先搜索(DFS) /** * Definition for a binary tree node. * struct TreeNode { *

weixin_45926367的博客 902

LeetCode 111. 二叉树的最小深度

文章目录1. 题目信息2. 解题2.1 DFS2.2 BFS 1. 题目信息 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 来源:力...

Michael是个半路程序员 1093

避坑指南:LVGL在Arduino环境编译报错?3步搞定lv_conf.h路径问题(附ST7789屏幕调试技巧)

本文详细解析了在Arduino环境中配置LVGL图形库时,如何解决常见的“lv_conf.h file not found”编译报错问题。通过三步法:定位并复制模板文件、启用核心配置并指定路径、配置基础参数,从根本上解决路径问题。文章还结合ST7789屏幕驱动,分享了使用TFT_eSPI库进行显示适配、内存优化及背光控制等实战调试技巧,帮助开发者建立清晰、可维护的嵌入式UI工程基础。

lake5的博客 860

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

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

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

【阅读文献笔记】FoundationStereo: Zero-Shot Stereo Matching

提出首个零样本泛化立体匹配基础模型设计 STA 模块融合单目先验提出 AHCF 模块增强代价滤波构建 100 万合成数据集 FSD + 自净化流程。

qq_46460379的博客 1257

LeetCode111. 二叉树的最小深度

LeetCode111. 二叉树的最小深度

Love Peace 530

YOLOv11改进 | 损失函数改进篇 | MPDIoU、InnerMPDIoU助力细节涨点(二次创新 + 代码解析)

本文为读者详细介绍了YOLOv11模型的最新改进,带来的改进机制是最新的损失函数MPDIoU和融合了最新的Inner思想的InnerMPDIoU(效果打爆之前的所有的损失函数提升检测精度和处理细节方面的作用。通过深入探讨MPDIoU和InnerMPDIoU(全网首发)的工作原理和实际代码实现,本文旨在指导读者如何将这些先进的损失函数技术应用到YOLOv11模型中,以提高其性能和准确性。文章内容涵盖从理论基础、代码实现,到实际教你如何添加本文的机制到你的模型中。

Snu77的博客 4021

LeetCode226.反转二叉树/LeetCode101.对称二叉树/LeetCode104.二叉树的最大深度/LeetCode111.二叉树的最小深度

递归的本质从根节点开始,先递归左子树,再递归右子树。每次递归调用完成后,会返回到上一层调用。

2401_84667454的博客 876

Python经典编程习题100例:第32例:相反顺序输出列表

不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 本人初学Python,只为熟悉语法编写,大神请勿理会 点击下面链接 Python经典编程100例习题汇总 题目描述: 按相反的顺序输出列表的值。 解题思路: > 利用reverse函数逆序 代码: arr=['f','g','e','b'] print(arr) arr.reverse() print(arr) ...

优快云 精品推荐 1416

YOLOv8性能提升:引入华为GhostNetv1特征提取网络

本文提出一种轻量化改进方案,将GhostNetV1作为YOLOv8的主干网络,以提升移动端部署效率。通过Ghost模块的两步特征生成机制(初级卷积+廉价操作),显著降低了30%的计算量(FLOPs)和参数量,精度损失控制在1%以内。实验表明,改进后的模型在骁龙865芯片上推理速度提升25%。核心创新包括:1)用GhostBottleneck替换CSP模块;2)保留FPN+PAN结构确保多尺度检测能力;3)提供完整的PyTorch实现方案。该工作为资源受限场景的目标检测提供了实用解决方案,未来可结合注意力机制

shrgegrb的博客 1180

leetcode111.二叉树的最小深度

给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/pr...

yyf_blog 200

R语言caret拟合模型:train函数构建xgBoost Dart模型、模型调优、自定义设置trainControl函数和tuneLength参数

R语言caret拟合模型:train函数构建xgBoost Dart模型、模型调优、自定义设置trainControl函数和tuneLength参数

statistics+insight+vista+power 528

111. 二叉树的最小深度(Leetcode刷题笔记 )

111. 二叉树的最小深度(Leetcode刷题笔记 ) 文章目录111. 二叉树的最小深度(Leetcode刷题笔记 )题目解题代码 C++(DFS递归实现)解题代码C++(BFS)算法效率感悟 题目 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:2 示例 2: 输入:root = [2,null,3,null,4,null,5,

lunan的博客 1117

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

LeetCode第 111 题:二叉树的最小深度(C++)

111. 二叉树的最小深度 - 力扣(LeetCode) 注意叶子节点的定义。 因为求的是最小深度,所以可以使用层次遍历(bfs): class Solution { public: int minDepth(TreeNode* root) { if(!root) return 0; int res = 0; queue<pair<TreeNode*, int>> q; q.push({root, 1});

zj 521

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

二叉树的最小深度 题目描述 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 思路1:DFS+递归 注意:修改求二叉树的最大深度(树高)的代码,求二叉树的最小深度同求最大深度相反,就是将 Math.max() 换成 Math.min() /** * Definition for a binary tree node. * public class TreeNode { * int val; * Tre

weixin_42956047的博客 243

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【Leetcode_总结】111. 二叉树的最小深度 - python

Q: 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度  2.   链接:https://leetcode-cn.com/prob...

maka_uir的博客 272

LeetCode - 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) 链..

一只羊 178

代码随想录算法训练营第十六天|104.二叉树的最大深度 559.n叉树的最大深度,111.二叉树的最小深度,222.完全二叉树的节点个数

代码随想录题解:​​​​​​​。

qq_42973684的博客 818

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

一、题目 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 二、解决 1、Recursive 思路: 代码: /** * Definition for a binary tree node. * public class TreeNode

HeavenDan的博客 231

LeetCode 111[Python]. 二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

LeetCode 111. 二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 Code def minDepth(self, root: TreeNode) -> int: if root == None: return 0 q=[root]#将起点加入 res=1 while q != None: n=len(q)#n也会更新

vvv__vvv的博客 652

LeetCode——111. 二叉树的最小深度

题目描述: 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 提示: 树中节点数的范围在 [0, 105] 内 -1000 <= Node.val <= 1000 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:2 示例 2: 输入:root = [2,null,3,null,4,null,5,null,6] 输出:5 层次遍历:第一次遍历到左右子树为空时的层数就是最小深度。

FYPPPP的博客 164

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

LeetCode - 111.二叉树的最小深度 【BFS】的算法框架 // 计算从起点 start 到终点 target 的最近距离 int BFS(Node start, Node target) { Queue<Node> q; // 核心数据结构 Set<Node> visited; // 避免走回头路 q.offer(start); // 将起点加入队列 visited.add(start); int step = 0; //

your_棒棒糖的博客 230
上一篇: LeetCode做题笔记-Q88.合并两个有序数组
下一篇: LeetCode做题笔记-二叉树的遍历
Solar_lemon
博客等级 码龄6年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值