最小深度
leetCode111:
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量
示例1:
输入:root = [3,9,20,null,null,15,7]
输出:2
示例2:
输入:root = [2,null,3,null,4,null,5,null,6]
输出:5
思路:
最小深度从根节点到最近叶子节点的最短路径上的节点数量,也就是最小深度的一层必须要有叶子节点。
如果左子树为空,右子树不为空,说明最小深度为1+右子树的深度。
如果右子树为空,左子树不为空,说明最小深度为1+左子树的深度。
如果左右子树都不为空,返回左右子树深度最小值+1。
public static int minDepth(TreeNode root){
//空树
if (root == null){
return 0;
}
//只有一个根节点的树
if (root.left == null && root.right == null){
return 1;
}
int min = Integer.MAX_VALUE;
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;
}