只有当一个节点的左右孩子都为空该节点才为叶节点
这一题不能参考二叉树的最大深度直接比较Math.min(minDepth(root.left),minDepth(root.right)),因为可能左子树为空,右子树不为空,此时root不为叶节点
题解可参考代码随想录
/*
1.如果root为空或左右子树都为空,return
2.如果左子树为空右子树不为空,此时root不是叶节点,应该继续计算root.right的最小子树
3.如果右子树为空左子树不为空,此时root不是叶节点,应该继续计算root.left的最小子树
*/
class Solution {
public int minDepth(TreeNode root) {
//边界条件:当前节点为空,记0
if(root==null) return 0;
//叶节点
else if(root.left==null&&root.right==null) return 1;
//左空右不为空
else if(root.left==null) return minDepth(root.right)+1;
//右空左不为空
else if(root.right==null) return minDepth(root.left)+1;
//左右均不为空
else return Math.min(minDepth(root.left),minDepth(root.right))+1;
}
}