参考代码:
class Solution {
public int minDepth(TreeNode root) {
if(root==null){
return 0;
}
if(root.left==null&&root.right!=null){
return 1+minDepth(root.right);
}
if(root.left!=null&&root.right==null){
return 1+minDepth(root.left);
}
return 1+Math.min(minDepth(root.left),minDepth(root.right));
}
}
最大深度参考代码:
public int maxDepth(TreeNode root) {
if (root == null) {
return 0;
}
return 1+Math.max(maxDepth(root.left), maxDepth(root.right));
}
类似于求二叉树的最大深度,但不同的是只有当一个节点的左右孩子均为空时,才是达到最低点,所以不能仅仅与求最大深度反着写,因为当其判断出左孩子是空时便得出了最小深度,其实并不是。
所以,如果左子树为空,右子树不为空,说明最小深度是 1 + 右子树的深度。
反之,右子树为空,左子树不为空,最小深度是 1 + 左子树的深度。 最后如果左右子树都不为空,返回左右子树深度最小值 + 1 。
|