【算法系列之一】二叉树最小深度
题目:
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [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; // 第三种情况}}
【算法系列之一】二叉树最小深度相关推荐
- leetcode 111 --- 二叉树最小深度
1 题目 求给定二叉树的最小深度.最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量. 2 解法 2.1 递归方法 要找到最小深度,首先要确定有根到叶的第一个叶节点,也就是一层一层确定.所以有 ...
- 【❤️算法系列之二叉树的实现(包含前序、中序、后序遍历以及节点的查找和删除)❤️】
- 二叉树的深度_十七:二叉树的最小深度
二叉树的最小深度:从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最短路径的长度为树的最小深度. 算法一 /** * @description 二叉树最小深度 * @param {*} ...
- 【❤️算法系列之顺序二叉树的实现(前序遍历、中序遍历、后序遍历)❤️】
1.何为顺序二叉树 2.顺序二叉树的特点 3.顺序二叉树的遍历 3.1.前序遍历 3.2.中序遍历 3.3.后序遍历 4.顺序二叉树的注意点 [❤️算法系列之二叉树的实现(包含前序.中序.后序遍历以及 ...
- 二叉树的深度怎么算(Java代码实现)
题目:输入一棵二叉树的根节点,求该树的深度.从根节点到叶节点依次经过的节点(含根.叶节点)形成树的一条路径,最长路径的长度为树的深度. 示例: 给定二叉树 返回它的最大深度 3 . 解题思路: 我们可 ...
- 【代码+注释】求二叉树的深度【超详细】递归+非递归实现
编写算法求出二叉树的深度(层数) 二叉树的深度是指从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.本文将用两种方式求出二叉树的深度 第一种:无可置疑是递归 核 ...
- 二叉树之二叉树的深度
1.二叉树的max deep 1. 高度与深度 二叉树的高度: 任意一个节点到叶节点的max距离 深度: 任意一个节点到根节点的max距离 求深度: 后续 left right mid 先求子节点的深 ...
- 【每日一算法】二叉树的最小深度
每日一算法-二叉树的最小深度 题目 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,2 ...
- 数据结构——二叉树的最小深度算法
给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明:叶子节点是指没有子节点的节点. 输入:root = [3,9,20,null,null,15,7] 输 ...
最新文章
- python 类 公有属性、私有属性、公有方法、私有方法
- 关闭体眠可释放系统盘的空间
- 芯片巨头为何痴恋开源软件?英特尔Imad Sousou来解密
- clear linux 图形界面,Clear Linux准备迁移到GNOME 3.36,放弃其桌面自定义设置
- core Bluetooth(蓝牙4.0)
- Sql Server 2005 row_number()分页性能测试
- @Select的使用说明
- 【Flink】flink highavailabilityservices 源码解析
- 汉化几乎所有编程软件
- C++ Builder 实现动态生成窗口、控件,以及处理控件事件(转载)
- do还是doing imagine加to_朗华环保环保管家科普之系列133:关于溶解氧DO,你真正了解吗?...
- RK3568-ANDROID11-4G-EC20-驱动篇(移远模块)
- calibre部署指南:docker一键部署calibre在线书库
- python deamon example
- Android字体的适配问题
- Java集合(一):集合的概念
- 2022北林计科学生保研历程
- 第十三届蓝桥杯省赛C++B组题解
- 超详细: Type-C接口Macbook笔记本无法充电(时连时断)的傻瓜处理流程
- 《数据挖掘导论(完整版)》习题答案导航_补档
热门文章
- 给与用户建立dblink的权限_网络安全 之 NTFS安全权限
- 网络资产管理系统_固定资产管理系统的常用操作
- php 结尾,PHP“意外结束”
- android跨进程事件注入(程序模拟用户输入)
- CTL_CODE说明
- 2018高职计算机474分排名,2018年高职分类考试招生录取分数线出炉
- html textarea 自动高度,HTML页面中textarea高度自适应解决方案
- 【转】禁用Chrome和Firefox中自动播放的动画GIF
- 【转】ABP源码分析九:后台工作任务
- 【转】1.9 Asp.Net Core 轻松学-多线程之取消令牌(