已知一个二叉树,求其最小的深度
算法思路:
这个题目求其最小深度不同于最大深度那样,这个要考虑该二叉树的左右子树是否存在,有四个方面
1、该二叉树为空,则返回0;
2、该二叉树不为空,且左右子树均存在,则和求最大深度一样,利用递归的方法求出最小深度
3、该二叉树只存在左子树,则返回值为1
4、该二叉树只存在右子树,则返回值为1
第二种情况时,分别求出左子树的最小值和右子树的最小值,再比较左右子树的最小值也会出现三种情况
a、left小于right时,取left+1
b、left大于right时,取right+1
c、left等于right时,并且left小于最大值,返回left+1
Java代码如下:
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int minDepth(TreeNode root) {
if(root!=null){
int left=Integer.MAX_VALUE;
int right=Integer.MAX_VALUE;
if(root.left!=null){
left=minDepth(root.left);
}
if(root.right!=null){
right=minDepth(root.right);
}
if(left<right){
return left+1;
}
else if(left>right){
return right+1;
}
else if(left==right&&left!=Integer.MAX_VALUE){
return left+1;
}
else{
return 1;
}
}
return 0;
}
}