给定一棵二叉树,找到它的最小深度。
最小深度问题就是就最短路径的节点个数
/*
思路:
递归,若为空树返回0;
若左子树为空,则返回右子树的最小深度+1;(加1是因为要加上根这一层,下同)
若右子树为空,则返回左子树的最小深度+1;
若左右子树均不为空,则取左、右子树最小深度的较小值,+1;
*/
public class l101_minimum_depth_binarytree {
class TreeNode{
int value;
TreeNode left;
TreeNode right;
TreeNode(int x){
value=x;
}
}
//递归,自顶向下
public int run(TreeNode root) {
if(root==null)
return 0;
if(root.left==null&&root.right==null)
return 1;
else{
if(root.left==null){
return run(root.right)+1;
}
if(root.right==null){
return run(root.left)+1;
}
}
return Math.min(run(root.left),run(root.right))+1;
}
}