输入一棵二叉树,判断该二叉树是否是平衡二叉树
java
class Tree {
boolean isBalance;
int deep;
public Tree(boolean isBalance, int deep) {
this.isBalance = isBalance;
this.deep = deep;
}
}
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
if (root == null) {
return true;
}
if (root.left == null && root.right == null) {
return true;
}
return isBal(root).isBalance;
}
private Tree isBal(TreeNode root) {
if (root == null) {
return new Tree(true, 0);
}
if (root.left == null && root.right == null) {
return new Tree(true, 1);
}
Tree left = isBal(root.left);
Tree right = isBal(root.right);
if (!left.isBalance || !right.isBalance) {
return new Tree(false, -1);
}
if (Math.abs(left.deep - right.deep) > 1) {
return new Tree(false, -1);
}
return new Tree(true, Math.max(left.deep, right.deep) + 1);
}
}