Указатели в AVL Tree Rotation C ++ - PullRequest
       36

Указатели в AVL Tree Rotation C ++

0 голосов
/ 20 февраля 2019

Я пытаюсь реализовать поворот 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 ++, я хочу понимать указатели.

...