剑指 Offer 55 - II.平衡二叉树
思路:一颗平衡二叉树,它的左右子树也都是平衡二叉树,且左右子树深度差不超过1。我写了三个函数,isBalanced(当本身及其左右子树都为平衡二叉树时返回true)、recur(当左右子树深度差不超过1时返回true)、depth(计算树的深度,上一题做过了!刚开始没想到,看了题解才知道这样)
class Solution {
public boolean isBalanced(TreeNode root) {
if(root == null) return true;
return recur(root) && isBalanced(root.left) && isBalanced(root.right);
}
public boolean recur(TreeNode root) {
if(root == null) return true;
if(Math.abs(depth(root.left) - depth(root.right)) > 1) return false;
else return true;
}
public int depth(TreeNode root) {
if(root == null) return 0;
return Math.max(depth(root.left), depth(root.right)) + 1;
}
}
时间复杂度 O(nlogn)=每层时间复杂度 * 层数复杂度
空间复杂度 O(n)