我的AVL树的函数重新平衡(节点*)有问题。这个函数在大多数示例中运行良好,但在某些情况下失败,例如当我尝试获取node-> left->左键时,当node-> left == 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;
}
}