原题目
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;
}
}
}