题目:

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

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

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

示例:

给定二叉树 [3,9,20,null,null,15,7],

    3/ \9  20/  \15   7

返回它的最小深度  2.

答案:

public class MinimumDepthOfBinaryTree {public static void main(String[] args) {TreeNode root = new TreeNode();root.val = 3;TreeNode left1 = new TreeNode();left1.val = 9;TreeNode righ1 = new TreeNode();righ1.val = 20;TreeNode left2 = new TreeNode();left2.val = 15;TreeNode right2 = new TreeNode();right2.val = 7;root.left = left1;root.right = righ1;righ1.left = left2;righ1.right = right2;System.out.println(minDepth(root)); // 结果 2System.out.println(minDepth1(root)); // 结果 2}private static int minDepth(TreeNode root) {if (root == null) {return 0; // 第一种情况}if (root.left == null && root.right == null) {return 1; // 第二种情况 左子和右子都为空,即为叶子节点}if (root.left != null && root.right != null) {int l = minDepth(root.left);int r = minDepth(root.right);return (l < r ? l : r) + 1; // 第三种情况 取左子和右子遍历后的最小深度}if (root.left != null) {return minDepth(root.left) + 1; // 第四种情况 左子不为空,继续遍历左子} else {return minDepth(root.right) + 1; // 第五种情况 或者右子不为空,继续遍历右子}}// 另一种解法private static int minDepth1(TreeNode root) {if (root == null) {return 0; // 第一种情况}int l = minDepth(root.left);int r = minDepth(root.right);if (l == 0 || r == 0) {return l + r + 1; // 第二、四、五种情况}return l > r ? r + 1 : l + 1; // 第三种情况}}

【算法系列之一】二叉树最小深度相关推荐

  1. leetcode 111 --- 二叉树最小深度

    1 题目 求给定二叉树的最小深度.最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量. 2 解法 2.1 递归方法 要找到最小深度,首先要确定有根到叶的第一个叶节点,也就是一层一层确定.所以有 ...

  2. 【❤️算法系列之二叉树的实现(包含前序、中序、后序遍历以及节点的查找和删除)❤️】

  3. 二叉树的深度_十七:二叉树的最小深度

    二叉树的最小深度:从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最短路径的长度为树的最小深度. 算法一 /** * @description 二叉树最小深度 * @param {*} ...

  4. 【❤️算法系列之顺序二叉树的实现(前序遍历、中序遍历、后序遍历)❤️】

    1.何为顺序二叉树 2.顺序二叉树的特点 3.顺序二叉树的遍历 3.1.前序遍历 3.2.中序遍历 3.3.后序遍历 4.顺序二叉树的注意点 [❤️算法系列之二叉树的实现(包含前序.中序.后序遍历以及 ...

  5. 二叉树的深度怎么算(Java代码实现)

    题目:输入一棵二叉树的根节点,求该树的深度.从根节点到叶节点依次经过的节点(含根.叶节点)形成树的一条路径,最长路径的长度为树的深度. 示例: 给定二叉树 返回它的最大深度 3 . 解题思路: 我们可 ...

  6. 【代码+注释】求二叉树的深度【超详细】递归+非递归实现

    编写算法求出二叉树的深度(层数) 二叉树的深度是指从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.本文将用两种方式求出二叉树的深度 第一种:无可置疑是递归 核 ...

  7. 二叉树之二叉树的深度

    1.二叉树的max deep 1. 高度与深度 二叉树的高度: 任意一个节点到叶节点的max距离 深度: 任意一个节点到根节点的max距离 求深度: 后续 left right mid 先求子节点的深 ...

  8. 【每日一算法】二叉树的最小深度

    每日一算法-二叉树的最小深度 题目 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,2 ...

  9. 数据结构——二叉树的最小深度算法

    给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明:叶子节点是指没有子节点的节点. 输入:root = [3,9,20,null,null,15,7] 输 ...

最新文章

  1. python 类 公有属性、私有属性、公有方法、私有方法
  2. 关闭体眠可释放系统盘的空间
  3. 芯片巨头为何痴恋开源软件?英特尔Imad Sousou来解密
  4. clear linux 图形界面,Clear Linux准备迁移到GNOME 3.36,放弃其桌面自定义设置
  5. core Bluetooth(蓝牙4.0)
  6. Sql Server 2005 row_number()分页性能测试
  7. @Select的使用说明
  8. 【Flink】flink highavailabilityservices 源码解析
  9. 汉化几乎所有编程软件
  10. C++ Builder 实现动态生成窗口、控件,以及处理控件事件(转载)
  11. do还是doing imagine加to_朗华环保环保管家科普之系列133:关于溶解氧DO,你真正了解吗?...
  12. RK3568-ANDROID11-4G-EC20-驱动篇(移远模块)
  13. calibre部署指南:docker一键部署calibre在线书库
  14. python deamon example
  15. Android字体的适配问题
  16. Java集合(一):集合的概念
  17. 2022北林计科学生保研历程
  18. 第十三届蓝桥杯省赛C++B组题解
  19. 超详细: Type-C接口Macbook笔记本无法充电(时连时断)的傻瓜处理流程
  20. 《数据挖掘导论(完整版)》习题答案导航_补档

热门文章

  1. 给与用户建立dblink的权限_网络安全 之 NTFS安全权限
  2. 网络资产管理系统_固定资产管理系统的常用操作
  3. php 结尾,PHP“意外结束”
  4. android跨进程事件注入(程序模拟用户输入)
  5. CTL_CODE说明
  6. 2018高职计算机474分排名,2018年高职分类考试招生录取分数线出炉
  7. html textarea 自动高度,HTML页面中textarea高度自适应解决方案
  8. 【转】禁用Chrome和Firefox中自动播放的动画GIF
  9. 【转】ABP源码分析九:后台工作任务
  10. 【转】1.9 Asp.Net Core 轻松学-多线程之取消令牌(