数据结构 编程1年新手视角的平衡二叉树AVL从C与C++实现③

对应地,我们可以将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

                insert(root, a[i]);

        }

        return root;

}

你可能感兴趣的:(数据结构,c语言,c++)