给定一个二叉树,判断它是否是 平衡二叉树

分析: 平衡二叉树的任意节点的左右子树高度差(平衡因子)绝对值不超过1
java
public boolean isBalanced(TreeNode root) {
int leftDeep = countDeep(root.left);
int rightDeep = countDeep(root.right);
return Math.abs((leftDeep - rightDeep)) <= 1 && isBalanced(root.left) && isBalanced(root.right);
}
private int countDeep(TreeNode root) {
// 递归跳出条件
if (root == null) {
return 0;
}
if (root.left == null && root.right == null) {
return 1;
}
// 计算左右子树的节点个数
int leftCount = countDeep(root.left);
int rightCount = countDeep(root.right);
// 左右子树节点的和 + 当前节点1
return Math.max(leftCount, rightCount) + 1;
}