定义
平衡树(Balance Tree,BT)
指的是,任意节点的子树的高度差都小于等于1。常见的符合平衡树的有,B树(多路平衡搜索树)、AVL树(二叉平衡搜索树)等。平衡树可以完成集合的一系列操作,
时间复杂度和空间复杂度相对于“2-3树”要低,在完成集合的一系列操作中始终保持平衡,为大型数据库的组织、索引提供了一条新的途径
平衡二叉树类
继承二叉树类
二叉树类代码(GitHub):https://github.com/rebelsisyphus/vscode/blob/main/.vscode/data%20structure/Bintree/tree.h
二叉树类(csdn):https://blog.csdn.net/qq_40602655/article/details/114552635
功能:旋转调整树高,插入删除操作
template <class T>
class AvlTree:public BinTree<T>{
protected:
BinTreeNode<T> * Insertnode(BinTreeNode<T> *subtree,T &x);
BinTreeNode<T> * Deletenode(BinTreeNode<T> *subtree,T &x);
BinTreeNode<T> * SingleLeftRotation(BinTreeNode<T> *subtree);
BinTreeNode<T> * SingleRightRotation(BinTreeNode<T> *subtree);
BinTreeNode<T> * LeftRightRotation(BinTreeNode<T> *subtree);
BinTreeNode<T> * RightLeftRotation(BinTreeNode<T> *subtree);
BinTreeNode<T> * Maxnode(BinTreeNode<T> *subtree){
BinTreeNode<T> *temp=subtree;
while(temp->rightChild!=NULL){
temp=temp->rightChild;
}
return temp;
}
BinTreeNode<T> * Minnode(BinTreeNode<T> *subtree){
BinTreeNode<T> *temp=subtree;
while(temp->leftChild!=NULL){
temp=temp->leftChild;
}
return temp;
}
public:
/*BinSearchTree(){this->root=NULL;};
BinSearchTree(T x){
this->root=new BinTreeNode<T>(x);
}
~BinSearchTree(){this->deleteall(this->root);}*/
void buildavltree();
void Insertnode(T &x){
this->root=Insertnode(this->root,x);}
void Deletenode