Leetcode111. 二叉树的最小深度
题目描述
/**
* 给定一个二叉树,找出其最小深度。
*
* 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
*
* 说明:叶子节点是指没有子节点的节点。
*/
思路分析
- 求二叉树的最小深度,可以使用深度优先的思路
- 定义一个变量保存二叉树的最小深度,默认为整数的最大值,然后每次使用min方法,记录最小值
- 递归计算每一层的高度,然后和min做比较
- 详解见下
源码及分析
/**
*
* @param root 树的根节点
* @return 返回二叉树的最小深度
*/
public int minDepth(TreeNode root) {
//如果树为空
if (root == null){
return 0;
}
//如果树只有一个根节点
if (root.left == null && root.right ==null){
return 1;
}
//定义变量记录树的最小深度,默认为最大整数
int min = Integer.MAX_VALUE;
//递归计算每一层的高度,min始终记录最小值
if (root.left != null){
min = Math.min(minDepth(root.left),min);
}
if (root.right != null){
min = Math.min(minDepth(root.right),min);
}
return min + 1;
}