求最大深度比较简单,因为有子树为空,肯定不是最大
但求最小深度,为空的值更小,但是却不能当作最小深度,所以只有返回另一子树的深度
1:如果左右子树都为null,会返回1
2:进行左子树和右子树的递归
3:如果只有左子树为null,就返回右子树,如果只有右子树,就返回左子树
4:都不为空,那就返回:min(left,right)+1
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int minDepth(TreeNode root) {
if(root==null) return 0;
if(root.left==null&&root.right==null) return 1;
int left=minDepth(root.left);
int right=minDepth(root.right);
if(root.left==null&&root.right!=null) return right+1;
if(root.left!=null&&root.right==null) return left+1;
return Math.min(left,right)+1;
}
}
网友评论