首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

二叉树的最小深度: BFS,Javascript (leetcode 111)

二叉树的最小深度是指从根节点到最近叶子节点的最短路径长度。BFS(广度优先搜索)是一种用于解决树或图的遍历问题的算法。在解决二叉树的最小深度问题时,可以使用BFS来进行求解。

在Javascript中,可以使用队列来实现BFS算法。具体步骤如下:

  1. 首先,创建一个队列,并将根节点入队。
  2. 初始化一个变量depth为1,用于记录当前的深度。
  3. 进入循环,直到队列为空:
    • 从队列中取出当前节点。
    • 如果当前节点是叶子节点(即左右子节点都为空),则返回当前深度。
    • 如果当前节点的左子节点不为空,则将左子节点入队。
    • 如果当前节点的右子节点不为空,则将右子节点入队。
    • 更新深度depth加1。
  • 如果循环结束后仍未找到叶子节点,则返回深度depth。

这样就可以通过BFS算法求解二叉树的最小深度。

以下是腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供弹性计算能力,满足各类业务需求。产品介绍链接
  • 腾讯云云数据库MySQL版:提供高性能、可扩展的MySQL数据库服务。产品介绍链接
  • 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务。产品介绍链接
  • 腾讯云人工智能平台(AI Lab):提供丰富的人工智能算法和模型,帮助开发者快速构建人工智能应用。产品介绍链接
  • 腾讯云物联网平台(IoT Hub):提供全面的物联网解决方案,帮助连接和管理物联网设备。产品介绍链接
  • 腾讯云移动开发平台(MTP):提供一站式移动应用开发、测试、分发和运营服务。产品介绍链接

以上是关于二叉树的最小深度、BFS算法以及腾讯云相关产品的完善且全面的答案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Leetcode No.111 二叉树最小深度

    一、题目描述 给定一个二叉树,找出其最小深度最小深度是从根节点到最近叶子节点最短路径上节点数量。 说明:叶子节点是指没有子节点节点。 ?...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 二、解题思路:深度优先搜索 首先可以想到使用深度优先搜索方法,遍历整棵树,记录最小深度。...对于每一个非叶子节点,我们只需要分别计算其左右子树最小叶子节点深度。...空间复杂度:O(H),其中 H 是树高度。空间复杂度主要取决于递归时栈空间开销,最坏情况下,树呈现链状,空间复杂度为O(N)。平均情况下树高度与节点数对数正相关,空间复杂度为O(logN)。

    29710

    Leetcode 111. 二叉树最小深度

    力扣111- 二叉树最小深度 给定一个二叉树,找出其最小深度最小深度是从根节点到最近叶子节点最短路径上节点数量。 说明:叶子节点是指没有子节点节点。...[0, 10^5] 内 -1000 <= Node.val <= 1000 解法1:层序优先遍历求解二叉树最小深度 这道题有几种解法,可以使用层序优先遍历方法解决。...用maxDepth表示二叉树最小深度 使用一个队列先保存上一次节点,最开始就是root根节点,然后将root方法一个空队列中。...1 maxDepth++; } return maxDepth; } }; 解法2:递归法 可以参考代码随想录111.二叉树最小深度,...| LeetCode111.二叉树最小深度 同样也是递归法,主要就是确定单层逻辑,和最大深度不一样是,最小深度条件限制比较多,如下图所示 因此我们需要分类讨论,节点孩子情况,因为这涉及到我们如何进行递归求解

    22520

    LeetCode-111. 二叉树最小深度(java)

    二、题目描述: 题目:        给定一个二叉树,找出其最小深度最小深度是从根节点到最近叶子节点最短路径上节点数量。 说明:叶子节点是指没有子节点节点。... ​​[0, 105]​​ 内 ​​-1000 <= Node.val <= 1000​​ 题目来源: ​​LeetCode官网​​题目难度:⭐⭐ 三、思路分析:        题目给定:最小深度是从根节点到最近叶子节点​​最短路径​​上节点数量...凡是遇到二叉树题,递归也是我最能想到,哈哈哈,但是还是存在很大优化空间,比如深度优先搜索或者广度优先搜索。具体思路及解题步骤请看如下: 当前节点 root 为空时,说明此处树高度为 0。...如果为其他情况,则说明当前节点有值,且需要分别计算其左右子树最小深度,返回最小深度进行+1,+1 表示当前节点存在有 1 个深度。...int ans = Integer.MAX_VALUE; //计算左节点最小深度。 if(root.left !

    15120

    LeetCode刷题实战111二叉树最小深度

    今天和大家聊问题叫做 二叉树最小深度,我们先来看题面: https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/ Given a...题意 给定一个二叉树,找出其最小深度最小深度是从根节点到最近叶子节点最短路径上节点数量。 说明:叶子节点是指没有子节点节点。 样例 ?...解题 https://zhuanlan.zhihu.com/p/47992915 这个题目求其最小深度不同于最大深度那样,这个要考虑该二叉树左右子树是否存在,有四个方面 1、该二叉树为空,则返回0;...2、该二叉树不为空,且左右子树均存在,则和求最大深度一样,利用递归方法求出最小深度 3、该二叉树只存在左子树,则返回值为1 4、该二叉树只存在右子树,则返回值为1 第二种情况时,分别求出左子树最小值和右子树最小值...LeetCode刷题实战101:对称二叉树 LeetCode刷题实战102:二叉树层序遍历 LeetCode刷题实战103:二叉树锯齿形层次遍历 LeetCode刷题实战104:二叉树最大深度

    22710

    ☆打卡算法☆LeetCode 111二叉树最小深度 算法解析

    一、题目 1、算法题目 “给定一个二叉树,找出其最小深度。” 题目链接: 来源:力扣(LeetCode) 链接: 111. 二叉树最小深度 2、题目描述 给定一个二叉树,找出其最小深度。...最小深度是从根节点到最近叶子节点最短路径上节点数量。 说明: 叶子节点是指没有子节点节点。...,遍历整棵树,找出最小深度。...对于每一个非根节点,只需要分别计算左右子树最小子节点深度。 也就是把大问题转化为小问题,那么这个问题就可以递归解决。...三、总结 这道题用了广度优先搜索方法,同样,也可以使用广度优先搜索方法去遍历整棵树。 对于这道题来书,广度优先搜索方法可以保证最先搜索到叶子节点深度一定最小

    14220

    leetcode刷题(50)——111. 二叉树最小深度

    给定一个二叉树,找出其最小深度最小深度是从根节点到最近叶子节点最短路径上节点数量。 说明: 叶子节点是指没有子节点节点。...示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它最小深度 2....方法1:递归 对比求最大深度,只有一个地方需要注意,那就是如果左右子树有一边为null而另一边不为null,最小深度不是0+1,而是另一个不为null子树最小深度+1 /** * Definition...leftDepth+rightDepth+1:Math.min(leftDepth,rightDepth)+1; } } 简洁不少,巧妙之处在于leftDepth+rightDepth+1 2.使用dfs深度优先搜索...depth = Integer.MAX_VALUE; 3.BFS广度优先搜索 广度优先搜索,结合数据结构是队列,代码如下: class Solution { public int minDepth

    16220

    Leetcode -111.二叉树最小深度 -112.路径总和】

    Leetcode -111.二叉树最小深度 题目:给定一个二叉树,找出其最小深度最小深度是从根节点到最近叶子节点最短路径上节点数量。 说明:叶子节点是指没有子节点节点。...[0, 10^5] 内 1000 <= Node.val <= 1000 思路:化为子问题寻找根左子树和右子树最小深度;结束条件为空、叶子节点; int minDepth(struct TreeNode...,就去递归右子树深度 if (root->left == NULL) return minDepth(root->right) + 1; //当前根右子树为空...,就去递归左子树深度 if (root->right == NULL) return minDepth(root->left) + 1; //记录左子树和右子树深度...RightDepth : LeftDepth; } Leetcode -112.路径总和 题目:给你二叉树根节点 root 和一个表示目标和整数 targetSum 。

    10110

    Leetcode 111. 二叉树最小

    力扣111- 二叉树最小深度 给定一个二叉树,找出其最小深度最小深度是从根节点到最近叶子节点最短路径上节点数量。 说明:叶子节点是指没有子节点节点。...[0, 10^5] 内 -1000 <= Node.val <= 1000 解法1:BFS深度优先遍历 这道题有几种解法,可以使用BFS优先遍历方法解决。...用maxDepth表示二叉树最小深度 使用一个队列先保存上一次节点,最开始就是root根节点,然后将root方法一个空队列中。...当队列不为空时,依次从队首获取元素,然后将队首元素左右节点(如果不为空)加入队列中,再将队首元素弹出,这样循环往复,在弹出当前层节点过程中,同时将下层节点放入队列中,此时二叉树深度加1,如果当前队首元素左右节点均为空...,最小深度条件限制比较多,如下图所示 test02.png 因此我们需要分类讨论,节点孩子情况,因为这涉及到我们如何进行递归求解。

    24220

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

    1 题目描述 给定一个二叉树,找出其最小深度最小深度是从根节点到最近叶子节点最短路径上节点数量。 说明:叶子节点是指没有子节点节点。...Node.val <= 1000 4 思路 方法一:深度优先搜索 首先可以想到使用深度优先搜索方法,遍历整棵树,记录最小深度。...对于每一个非叶子节点,我们只需要分别计算其左右子树最小叶子节点深度。这样就将一个大问题转化为了小问题,可以递归地解决该问题。 复杂度分析 时间复杂度:O(N),其中N是树节点数。...当我们找到一个叶子节点时,直接返回这个叶子节点深度。广度优先搜索性质保证了最先搜索到叶子节点深度—定最小。 复杂度分析 时间复杂度:O(N),其中N是树节点数。对每个节点访问一次。...5 我答案 方法一:深度优先搜索 class Solution { public int minDepth(TreeNode root) { if (root == null)

    29420

    画解算法:111. 二叉树最小深度

    题目链接 https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/ 题目描述 给定一个二叉树,找出其最小深度。...最小深度是从根节点到最近叶子节点最短路径上节点数量。 说明: 叶子节点是指没有子节点节点。...示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它最小深度 2....解题方案 思路 标签:DFS 终止条件、返回值和递归过程: 当前节点root为空时,说明此处树高度为0,0也是最小值 当前节点root左子树和右子树都为空时,说明此处树高度为1,1也是最小值 如果为其他情况...,则说明当前节点有值,且需要分别计算其左右子树最小深度,返回最小深度+1,+1表示当前节点存在有1个深度 时间复杂度:O(n),n为树节点数量 代码 Java版本 /** * Definition

    96510

    Leetcode二叉树最小深度

    最小深度是从根节点到最近叶子节点最短路径上节点数量。 说明: 叶子节点是指没有子节点节点。...示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它最小深度 2....解题思路: 这题和【LeetCode二叉树最大深度很相似,我都是采用递归求解(流下了菜鸡泪水)。...因为根据题目描述“最小深度是从根结点到最近叶子结点最短路径上结点数量”,除非是只有一个根结点,否则必须要有一个叶子结点与根结点相连才能组成路径,所以[1,2]最小深度是2,[1]最小深度是1。...只有当左右子树同时存在时 才返回(1+左右子树中最小深度),否则返回(不为空那棵子树深度+1)。

    42120

    LC104–二叉树最大深度—-LC111二叉树最小深度

    二叉树最大深度](https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/) 广度优先 深度优先 [111....二叉树最小深度](https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/) 思路 难度简单783 给定一个二叉树,...二叉树深度为根节点到最远叶子节点最长路径上节点数。 说明: 叶子节点是指没有子节点节点。...二叉树最小深度 难度简单440 给定一个二叉树,找出其最小深度最小深度是从根节点到最近叶子节点最短路径上节点数量。 **说明:**叶子节点是指没有子节点节点。...,也就是左右孩子都不为空,返回最小深度+1即可 class Solution { public int minDepth(TreeNode root) { if(

    27330
    领券