首页 > 代码库 > 递归求取二叉树最小深度和最大深度
递归求取二叉树最小深度和最大深度
public class Binarytreedept { /* * 输出二叉树最小深度 * 核心思想:根节点到达最近的叶子节点的路径长度。 * 1、当根为空时,输出0。 * 2、当左子树为空时,输出右子树深度+1。 * 3、当右子树为空时,输出左子树深度+1。 * 4、以上条件都不满足时,输出min(左子树深度,右子树深度)+1。 * * 输出二叉树最大深度 * 核心思想:根节点到达最远的叶子节点的路径长度。 * 1、如果二叉树为空,则深度为0; * 2、如果不为空,分别求左子树的深度和右子树的深度,取较大值加1,因为根节点深度是1。 */ public static int minDepth(BiTreeNode root) { //如果二叉树为空,返回0; if(root == null) return 0; //如果二叉树左子树为空,返回右子树深度; if(root.lchild == null) return minDepth(root.rchild) + 1; //如果二叉树右子树为空,返回左子树深度; if(root.rchild == null) return minDepth(root.lchild) + 1; //如果二叉树左右子树均不为为空,返回左右子树深度的较小值; int leftDepth = minDepth(root.lchild); int rightDepth = minDepth(root.rchild); return leftDepth < rightDepth ? (leftDepth + 1) : (rightDepth + 1); } public static int maxDepth(BiTreeNode root) { //如果二叉树为空,返回0; if(root == null) return 0; //否则返回二叉树左右子树深度较大值; int leftDepth = maxDepth(root.lchild); int rightDepth = maxDepth(root.rchild); return leftDepth > rightDepth ? (leftDepth + 1) : (rightDepth + 1); } }
本文出自 “递归的梦想偏执狂” 博客,请务必保留此出处http://rubinzhan.blog.51cto.com/11883911/1861452
递归求取二叉树最小深度和最大深度
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。