博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Minimum Depth of Binary Tree,求树的最小深度
阅读量:4576 次
发布时间:2019-06-08

本文共 1217 字,大约阅读时间需要 4 分钟。

算法分析:递归和非递归两种方法。

public class MinimumDepthofBinaryTree {		//递归,树的最小深度,就是它左右子树的最小深度的最小值+1	public int minDepth(TreeNode root) {        if(root == null)        {        	return 0;        }        int lmin = minDepth(root.left);        int rmin = minDepth(root.right);        if(lmin == 0 && rmin == 0)        {        	return 1;        }        if(lmin == 0)//左子树为空,右子树不为空,则最小深度为右子子树的最小深度+1        {        	return rmin + 1;         }        if(rmin == 0)        {        	return lmin + 1;        }        return Math.min(lmin, rmin)+1;    }			//非递归,按层遍历,找到第一个叶子结点	public int minDepth2(TreeNode root) {		if(root == null)		{			return 0;		}		ArrayList
list = new ArrayList<>(); int count = 1;//初始值为1 list.add(root); while(!list.isEmpty()) { ArrayList
temp = new ArrayList<>(); for (TreeNode node : list) { if(node.left == null && node.right == null)//当节点左右子树都为空时,该节点为第一个叶子节点,该节点的深度即为树的最小深度 { return count; } if(node.left != null) { temp.add(node.left); } if(node.right != null) { temp.add(node.right); } } count ++;//按层遍历,每循环一次,就是一层,层数加1 list = temp; } return count; }}

  

转载于:https://www.cnblogs.com/masterlibin/p/5911330.html

你可能感兴趣的文章
TraceSource记录程序日志
查看>>
【Source教程】GCFScape下载安装与使用
查看>>
数据结构 单链表反转 回顾练习
查看>>
N!分解素因子及若干问题
查看>>
主动对象
查看>>
C++ string int 转换 split
查看>>
python3基础系列之六【python推导式】
查看>>
python登录面向对象_python基础 面向对象一
查看>>
python程序设计教程胡建华_Python程序设计教程
查看>>
mac php-frm xampp_如何在Mac中使用shell_exec xampp php
查看>>
axure 导入元件库显示不出白框_猿型库:Axure小练习之自定义下拉框
查看>>
两个集合相减怎么算_你家使用的防火窗(耐火窗)质量合格吗?怎么判断好坏呢?...
查看>>
ue4加载本地图片_UE4引擎初始化原理详细讲解
查看>>
python整数作为条件_Python整数类型(int)详解
查看>>
pta简单实现x的n次方_c语言第二次作业pta..docx
查看>>
【Entity Framework】Model First Approach
查看>>
C# DataTable删除行Delete与Remove的问题
查看>>
HDU2586How far away? LCA
查看>>
网络流 - 最大流
查看>>
随手记note(记事簿)
查看>>