そのため、新しいツリーを挿入した後に Splay 関数を実装することになりました。ただし、複数の int を挿入しようとすると、Segmentation Fault (core dump) と表示されて終了します。
誰でも私の問題がどこにあるかを確認できますか?
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);
}
}
}
}