算法思路:通过递归判断左右子树的高度,如果返回-1说明不平衡,否则返回值就是子树的高度,可以判断左右子树是否平衡。
public boolean IsBalanced_Solution(TreeNode root) {
if(root==null) return true;
int i=hei(root);
if(i==-1) return false;
return true;
}
public static int hei( TreeNode root){
if(root==null) return 0;
int left=hei(root.left);
if(left==-1) return -1;
int right=hei(root.right);
if(right==-1) return -1;
if(Math.abs(left-right)>1) return -1;
else return 1+Math.max(left,right);
}
}