Я пытаюсь реализовать поворот AVL (влево) следующим образом: Пример вращения влево
Для узла я использую структуру:
struct Node {
int value;
int balance;
int height;
Node* right;
Node* left;
Node* parent;
};
И вот мой код для поворота:
void AVL::left_rotation(Node* &y) {
Node* T2 = y->right->left;
Node* x = y->right;
x->left = y;
y->right = T2;
if (y->parent != NULL) {
x->parent = y->parent;
if (x->parent->left == y) {
x->parent->left = x;
}
else {
x->parent->right = x;
}
}
else {
m_root = x;
}
y->parent = x;
if (T2 != NULL) {
T2->parent = y;
}
}
При выполнении строки x->parent = y->parent;
узел *y
заменяется на *(y->parent)
.Как я могу это исправить и почему это происходит?Я новичок в C ++, я хочу понимать указатели.