// LL 右旋
void rotatedLL(AVLNode *& k2) {
AVLNode *k1 = k2->left;
k2->left = k1->right;
k1->right = k2;
k2->height = max(height(k2->left), height(k2->right)) + 1;
k1->height = max(height(k1->left), k2->height) + 1;
k2 = k1;
}
// RR 左旋
void rotatedRR(AVLNode *& k1) {
AVLNode *k2 = k1->right;
k1->right = k1->left;
k2->left = k1;
k1->height = max(height(k1->left), height(k1->right)) + 1;
k2->height = max(height(k2->right), k1->height) + 1;
k1 = k2;
}
// LR 双旋转, 先右旋, 再左旋
void rotatedLR(AVLNode *& k3) {
rotatedRR(k3->left);
rotatedLL(k3);
}
// RL 双旋转, 先左旋, 再右旋
void rotatedRL(AVLNode *& k1) {
rotatedLL(k1->right);
rotatedRR(k1);
}
AVL树及旋转
最新推荐文章于 2024-09-04 18:50:23 发布