对应地,我们可以将insert函数中省略的操作补上
if(getBalance(node)==2){
if(getBalance(node->left)==1){
node=rightRotate(node); //对应LL型
}
else if(getBalance(node->left)==-1{
node->left = leftRotate(node->left); //对应LR型
node=rightRotate(node);
}
}
else if(getBalance(node)==-2){
if(getBalance(node->right)==-1){
node = leftRotate(node); //对应RR型
}
else if(getBalance(node->right)==1){
node->right=rightRotate(node->right); //对应RL型
node=leftRotate(node);
}
}
最后,我们使用create函数将n个数据的数组a[]传入AVL中,
node*create(int a[], int n){
node*root = NULL;
for(int i = 0; i<n; i++){
insert(root, a[i]);
}
return root;
}