要判断二叉树是否为平衡二叉树
平衡二叉树的定义 :在一个二叉树中 每个节点子树的左右高度差不超过1
1、首先判断它的根节点是否为空
若是的话,就是平衡二叉树
2、分别求出左右子树的高度
若高度的绝对值不超过一则为平衡二叉树
//计算二叉树高度
public static int calcHigh(Node1 root) {
if (root == null) {
return 0;
}
int left = calcHigh(root.left);
int right = calcHigh(root.right);
int high = Math.max(left, right);
return high;
}
//判断是否为平衡树
public static boolean isBalanced(Node1 root){
if(root==null){
return true;
}
boolean left=isBalanced(root.left);
if(!left){
return false;
}
boolean right=isBalanced(root.right);
if(!right){
return false;
}
int leftheigh=calcHigh(root.left);
int rightheigh=calcHigh(root.right);
int diff=leftheigh-rightheigh;
if(diff>1||diff<-1){
return false;
}
return true;
}