public static int checkHeight(TreeNode root){
if(root==null){
reuturn 0;//高度为0
}
/*检查左子树是否平衡*/
int leftHeight=checkHeight(root.left);
if(leftHeight==-1){
return -1;//不平衡
}
/*检查右子树是否平衡*/
int rightHeight=checkHeight(root.right);
if(rightHeight==-1){
return -1;//不平衡
}
/*检查当前节点是否平衡*/
int heightDiff=leftHeight-rightHeight;
if(Math.abs(heightDiff>1)){
return -1;
}else{
/*返回高度*/
return Math.max(leftHeight,rightHeight)+1;
}
}
面试金典上的内容:
时间复杂度O(N),空间复杂度O(H)
public static boolean isBalanced(TreeNode root){
if(checkHieght(root==-1)){
return false;
}else{
return true;
}
}