1.第一发,,,比较直白比较耗时的办法。
对每一个节点判断左右子树是不是平衡的就OK
public class Solution {
public boolean isBalanced(TreeNode root) {
if (root == null) {
return true;
}
int a = maxLen(root.left);
int b = maxLen(root.right);
if (Math.abs(a - b) > 1) {
return false;
} else {
return isBalanced(root.left) && isBalanced(root.right);
}
}
public int maxLen(TreeNode root) {
if (root == null) {
return 0;
}
int a = 0, b = 0;
if (root.left != null) {
a = maxLen(root.left) + 1;
}
if (root.right != null) {
b = maxLen(root.right) + 1;
}
if (a == 0 && b == 0) {
return 1;
}
if (a > b) {
return a;
} else {
return b;
}
}
}