所以我是在插入一棵新树后实现 Splay 功能。但是,当我尝试插入多个整数时,它会显示分段错误(核心转储)然后退出。
谁能检查我的问题在哪里?
void SplayTree::splay(Node* node)
{
if (node == NULL)
return;
while (node!=NULL) {
Node* parent = node->parent;
if (parent != NULL) {
if (parent->left == node) {
rightRotate(parent);
} else {
leftRotate(parent);
}
} else {
Node* gparent = parent->parent;
if (parent->left == node && gparent->left == parent) {
rightRotate(gparent);
rightRotate(node->parent);
} else if (parent->right == node &&
gparent->right == parent) {
leftRotate(gparent);
leftRotate(node->parent);
} else if (parent->left == node &&
gparent->right == parent) {
rightRotate(parent);
leftRotate(node->parent);
} else {
leftRotate(parent);
rightRotate(node->parent);
}
}
}
}