检查是否二分搜索树
//判断该二叉树是否是一颗二分搜索树
public boolean isBST(){
ArrayList<K> keys=new ArrayList<>();
inOrder(root,keys);
for(int i=1;i<keys.size();i++)
if(keys.get(i-1).compareTo(keys.get(i))>0)
return false;
return true;
}
private void inOrder(Node node,ArrayList<K> keys){
if(node == null)
return ;
inOrder(node.left, keys);
keys.add(node.key);
inOrder(node.right, keys);
}
检查是否平衡二叉树
判断左右两树只差是否小于1 大于1就不是平衡树
if(Math.abs(balanceFactor) >1)
return false;
return isBlanced(node.left) && isBlanced(node.right);
//判断该二叉树是否是一颗平衡二叉树
public boolean isBalanced(){
return isBlanced(root);
}
//判断以node为根的二叉树是否是一颗二叉树,递归算法
private boolean isBlanced(Node node){
if(node ==null)
return true;
int balanceFactor=getBalanceFactor(node);
if(Math.abs(balanceFactor) >1)
return false;
return isBlanced(node.left) && isBlanced(node.right);
}