public boolean isBlance(TreeNode root) {
boolean []result=new boolean[1];
result[0]=true;
int level=1;
getHeight(root,level,result);
return result[0];
}
//返回树的最大深度
public int getHeight(TreeNode root,int level,boolean [] result){
if(root==null){//如果根节点为空,直接返回树的高度,且该树为空,是平衡二叉树
return level;
}
//遍历左子树,
int LeftHeight=getHeight(root.left,level+1,result);
//如果左子树不是平衡二叉树,则直接返回
if(!result[0]){
return level;
}
//遍历右子树
int RightHeight=getHeight(root.right,level+1,result);
//如果右子树不是平衡二叉树,则直接返回
if(!result[0]){
return level;
}
//通过比较左右子树的深度,如果他们的深度差大于1,则说明不是平衡二叉树,直接返回
if(Math.abs(LeftHeight-RightHeight)>1){
result[0]=false;
}
//返回深度最大的那个子树
return Math.max(LeftHeight,RightHeight);
}
boolean []result=new boolean[1];
result[0]=true;
int level=1;
getHeight(root,level,result);
return result[0];
}
//返回树的最大深度
public int getHeight(TreeNode root,int level,boolean [] result){
if(root==null){//如果根节点为空,直接返回树的高度,且该树为空,是平衡二叉树
return level;
}
//遍历左子树,
int LeftHeight=getHeight(root.left,level+1,result);
//如果左子树不是平衡二叉树,则直接返回
if(!result[0]){
return level;
}
//遍历右子树
int RightHeight=getHeight(root.right,level+1,result);
//如果右子树不是平衡二叉树,则直接返回
if(!result[0]){
return level;
}
//通过比较左右子树的深度,如果他们的深度差大于1,则说明不是平衡二叉树,直接返回
if(Math.abs(LeftHeight-RightHeight)>1){
result[0]=false;
}
//返回深度最大的那个子树
return Math.max(LeftHeight,RightHeight);
}