AVL ребалансировка дерева

У меня проблема с перебалансировкой функции (узел *) для дерева AVL. Эта функция хорошо работала в большинстве примеров, но в некоторых случаях она не срабатывает, например, когда я пытаюсь получить ключ узла-> влево-> влево, когда узел-> влево == NULL.

TAVLStabla
void AVLStabloMapa<Tkljuca, Tvrijednosti>::rebalansiraj(Node* temp) {
while(temp != 0) {
updateHeight(temp);
if(height(temp->l) >= 2 + height(temp->d)) {
if(height(temp->l->l) >= height(temp->d->d))
rightRot(temp);
else {
rightRot(temp->d);
leftRot(temp);
}
}
else if(height(temp->d) >= 2 + height(temp->l)) {
if(height(temp->d->d) >= height(temp->d->l))
leftRot(temp);
else {
rightRot(temp->d);
leftRot(temp);
}
}
temp = temp->r;
}
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector