【LeetCode-面试算法经典-Java实现】【111-Minimum Depth of Binary Tree(二叉树的最小深度)】
原题
Given a binary tree, find its minimum depth.
The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
题目大意
给定一棵两叉树求树的最小深度。
解题思路
遍历法,对整个树进行遍历,找出最小的深度。
代码实现
树结果定义
public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }
- 1
- 2
- 3
- 4
- 5
- 6
算法实现类
public class Solution { private int min = Integer.MAX_VALUE; // 记录树的最小深度 private int cur = 0; // i当前处理的树的尝试 public int minDepth(TreeNode root) { depth(root); return min; } /** * 计算树的深度 * * @param node 当前结点 */ private void depth(TreeNode node) { if (node == null) { min = cur; return; } cur++; // 当前处理的层次加1 // 如果是叶节点,并且路径比记录的最小还小 if (node.left == null && node.right == null && cur < min) { min = cur; // 更新最小值 } // 处理左子树 if (node.left != null) { depth(node.left); } // 处理右子树 if (node.right != null) { depth(node.right); } cur--; // 还原 } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
异常中要了解的Throwable类中的几个方法
* 异常中要了解的Throwable类中的几个方法: * public String getMessage() 获取异常的信息,返回的是字符串 * public String toString() 获取异常类名和异常信息(即简单的异常信息描述),返回的是是以下字符串的拼接: * 此对象的类的 name(全路径名) * ": "(冒号和一个空格) * 调用此对象 getLocalizedMessage()方法的结果 (默认返回的是getMessage()的内容) * public void printStackTrace() 获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。把信息输出在控制台。 * public void printStackTrace(PrintStreams) 通常用该方法将异常内容保存在日志文件中,以便查阅。 示例代码如下: 1 package cn.itcast_03; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java...
- 下一篇
Linux_开发工具
Linux_开发工具 01 除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点. Emacs 如果说Vim是编辑器之神,那么Emacs是神的编辑器。 有句夸张的话说:Emacs是伪装成编辑器的操作系统,这句话并不夸张。 Emacs其实是个Lisp的解释器,因此可以用Lisp灵活地扩展。 Lisp是什么东西,这同样是种很有生命力的编程语言。在C语言还没有发明的年代,MIT的人工智能实验室写ITS操作系统时,一部分用的是汇编语言,还有一部分就是用的Lisp。 现在,Lisp仍在人工智能研究领域广泛使用着。有这么牛逼的扩展语言,注定Emacs向着无所不能的方向发展。渐渐地,人们用Emacs不再限于写程序,写文档,而且在Emacs里管理文件系统,运行终端,收邮件,上网,听音乐……,真是一发不可收拾。甚至,有人用Emacs控制咖啡机煮咖啡。 在基于编辑器的功能基础上,Emacs有如下特点: (1)交互式编辑器(2)实时编辑器(3)高级编辑器(4)自文档化(5)可定制性(6)可扩展性(集成Lisp语言)(7)支持X Window环境 Emacs和vim的区别: (1...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装Docker,最新的服务器搭配容器使用
- 设置Eclipse缩进为4个空格,增强代码规范
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7安装Docker,走上虚拟化容器引擎之路