题目描述
实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。
思路
判断二叉树是否是平衡二叉树以及左子树和右子树的高度差不超过1
class Solution {
public boolean isBalanced(TreeNode root) {
if(root == null) return true;
//分别计算左子树和右子树的高度
int left = depth(root.left);
int right = depth(root.right);
//这两个子树的高度不能超过1,并且他的两个子树也必须是平衡二叉树
return Math.abs(left -right) <= 1 && isBalanced(root.left) && isBalanced(root.right);
}
//自定义求二叉树高度的方法depth
public int depth(TreeNode root){
if(root == null) return 0;
return Math.max(depth(root.left),depth(root.right)) + 1;
}
}