求树的最小深度,该怎么处理

求树的最小深度
public static int minDepth(TreeNode root) {
if(root==null)return 0;

int left=minDepth(root.left);//左子树的最小深度
int right=minDepth(root.right);//右子树的最小深度
                      //这里的2个if加了能看懂,但是为什么会加上,怎么想到的?什么原理,求教
if(left==0){
return right+1;
}
if(right==0){
return left+1;
}

return Math.min(left, right)+1;

}

------解决思路----------------------
考虑特殊情况
如果没有左子树或则右子树,那么深度不能是0+1吧
只能是右子树或则是左子树的深度+1
排除了这种特殊情况就是左右子树都有时的一般情况了~
数据结构只有点印象了,代码上分析是这样的