思路:
1.边界条件:如果树为空,则返回
2.满足条件的解:当到达叶子节点时,即左右子树为空,则比较当前的深度与所记录的最小深度,若比最小深度小,则更新最小深度,否则不执行。
3.如果左子树不为空则进行搜索,如果右子树不为空则进行搜索。
public class Solution {
public int minDepth=Integer.MAX_VALUE;
public void robot(TreeNode root,int curDepth){
//边界条件
if(root==null) return;
//满足解的条件 (叶子节点)
if(root.left==null && root.right==null){
//得到最小解
if(curDepth<minDepth)
minDepth = curDepth;
}
//搜索左子树 每搜索一层 深度需要+1
if(root.left!=null){
robot(root.left,curDepth+1);
}
//搜索右子树 每搜索一层 深度需要+1
if(root.right!=null){
robot(root.right,curDepth+1);
}
}
public int minDepth(TreeNode root) {
if(root==null) return 0;
robot(root,1);
return minDepth;
}
}