每日一练:LeeCode-111. 二叉树的最小深度【二叉树】

这篇具有很好参考价值的文章主要介绍了每日一练:LeeCode-111. 二叉树的最小深度【二叉树】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文是力扣LeeCode-111. 二叉树的最小深度 学习与理解过程,本文仅做学习之用,对本题感兴趣的小伙伴可以出门左拐LeeCode。

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

示例 1:

每日一练:LeeCode-111. 二叉树的最小深度【二叉树】,# 每日一道LeeCode算法题,leetcode,算法,数据结构

输入: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

思路

这道题的思路和二叉树的最大深度的几乎一样,都是通过后序遍历的方式求解,,但是区别在于对叶子结点的判断上。叶子节点是指没有子节点的节点即:叶子结点没有右左右孩子节点

递归法

  • 确定递归函数的参数和返回值: int getDepth(TreeNode node)
  • 确定终⽌条件: if(node==null)return 0;
  • 确定单层递归的逻辑:
    最大深度中的单层代码逻辑
        int leftHeight = getDepth(node.left);	//左
        int rightHeight = getDepth(node.right);	//右
        int height = 1+Math.max(leftHeight,rightHeight);	//中
        return height;

此处和最大深度中的单层代码逻辑不太一样需要考虑根节点一边节点为空的情况因为这种情况会影响叶子结点的判断最小深度应为1 + 根节点左/右⼦树的深度所以代码中需要额外考虑:1、当⼀个左⼦树为空,右⼦树不为空; 2、当⼀个右⼦树为空,左⼦树不为空

        int leftHeight = getDepth(node.left);	// 左
        int rightHeight = getDepth(node.right);// 右
		// 当⼀个左⼦树为空,右不为空,这时并不是最低点
        if(node.left==null&&node.right!=null){	// 中
            return 1+rightHeight;
        }
        // 当⼀个右⼦树为空,左不为空,这时并不是最低点
        if(node.left!=null&&node.right==null){
            return 1+leftHeight;
        }

        int height = 1+Math.min(leftHeight,rightHeight);
        return height;

代码实现

class Solution {
    public int minDepth(TreeNode root) {
        return getDepth(root);
    }

    private int getDepth(TreeNode node){
        if(node==null)return 0;
        int leftHeight = getDepth(node.left);	// 左
        int rightHeight = getDepth(node.right);// 右
		// 当⼀个左⼦树为空,右不为空,这时并不是最低点
        if(node.left==null&&node.right!=null){	// 中
            return 1+rightHeight;
        }
        // 当⼀个右⼦树为空,左不为空,这时并不是最低点
        if(node.left!=null&&node.right==null){
            return 1+leftHeight;
        }

        int height = 1+Math.min(leftHeight,rightHeight);
        return height;
    }
}

最终要的一句话:做二叉树的题目,首先需要确认的是遍历顺序

大佬们有更好的方法,请不吝赐教,谢谢文章来源地址https://www.toymoban.com/news/detail-787314.html

到了这里,关于每日一练:LeeCode-111. 二叉树的最小深度【二叉树】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • leetcode做题笔记111. 二叉树的最小深度

    给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 本题与求二叉树最大深度的题很像,先判断根节点,再递归看左右子树最小值返回最小深度,由于根节点若在的话至少有一个节点所

    2024年02月11日
    浏览(42)
  • 【深度优先】【广度优先】Leetcode 104 二叉树的最大深度 Leetcode 111 二叉树的最小深度 Leetcode 110 平衡二叉树

    二叉树节点的深度: 指从根节点到该节点的最长简单路径边的条数或者节点数 (取决于深度从0开始还是从1开始) 二叉树节点的高度: 指从该节点到叶子节点的最长简单路径边的条数后者节点数 (取决于高度从0开始还是从1开始) 【前序求的是深度,后序求的是高度】 -

    2024年02月19日
    浏览(53)
  • 数据结构与算法之二叉树: Leetcode 111. 二叉树的最小深度 (Typescript版)

    二叉树的最小深度 https://leetcode.cn/problems/minimum-depth-of-binary-tree/ 描述 就 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1 示例 2 提示 树中节点数的范围在 [0, 1 0 5 10^5 1 0 5 ] 内

    2024年02月06日
    浏览(44)
  • 算法训练day16Leetcode104二叉树最大深度111二叉树最小深度222完全二叉树的节点个数

    https://www.bilibili.com/video/BV1Gd4y1V75u/?vd_source=8272bd48fee17396a4a1746c256ab0ae 用递归,但是什么顺序没想清楚 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始) 二叉树节点的高度:指从该节点到叶子节点的最长简单路径边

    2024年01月16日
    浏览(44)
  • 代码随想录 Day13 二叉树 LeetCode T104 二叉树的最大深度 T111 二叉树的最小深度 T222完全二叉树的节点个数

    以下题解的更详细思路来自于:代码随想录 (programmercarl.com) 二叉树的高度与深度 这里先补充一下二叉树深度和高度的概念 高度:二叉树中任意一个节点到叶子结点的距离 深度:二叉树中任意一个节点到根节点的距离 下面给出一个图便于理解 获取高度与深度的遍历方式 高度:后

    2024年02月08日
    浏览(41)
  • 每日一练:LeeCode-110、平衡二叉树【二叉树】

    本文是力扣LeeCode-110、平衡二叉树 学习与理解过程,本文仅做学习之用,对本题感兴趣的小伙伴可以出门左拐LeeCode。 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度 平衡二叉树定义 为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过

    2024年01月22日
    浏览(40)
  • 每日一练:LeeCode-654、最大二叉树【二叉树+DFS+分治】

    本文是力扣LeeCode-654、最大二叉树【二叉树+DFS+分治】 学习与理解过程,本文仅做学习之用,对本题感兴趣的小伙伴可以出门左拐LeeCode。 给定一个 不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建 一个根节点 , 其值为 nums 中的最大值 。 递归

    2024年02月21日
    浏览(43)
  • leecode104——二叉树的最大深度

    左子树与右子树的最大深度可以通过递归遍历(深度优先搜索)得到,首先: 递归三部曲:(1)确定递归的参数和返回值,因为要比较的是左右子树的最大深度,所以每次传入的根节点,返回最大深度,即int类型的数字 (2)递归的终止条件:当跟节点为空,说明高度为0或

    2024年02月03日
    浏览(40)
  • day16 二叉树的最大深度 n叉树的最大深度 二叉树的最小深度 完全二叉树的节点数

    题目链接:104 二叉树的最大深度 题意 二叉树的根节点是root,返回其最大深度(从根节点到最远叶子节点的最长路径上的节点数) 递归 根节点的的高度就是二叉树的最大深度  所以使用后序遍历求最大高度的方式求出最大深度 递归三部曲 1)确定递归函数的参数和返回值

    2024年02月02日
    浏览(45)
  • 随想录刷题笔记 —二叉树篇3 117填充每个节点的下一个右侧节点指针II 104二叉树最大深度 111二叉树最小深度

    和116的区别在于116是完美二叉树,而117中的结点并非左右子结点都存在。 解法一:队列 解法二:双循环代替队列 解法一:队列 使用depth标记深度,进行层序遍历,每遍历完一层,depth+1 解法二:递归 递归出口:传入结点为空,返回0 否则返回左子结点和右子结点返回值的最

    2024年02月19日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包