編集済み*:二分探索木の削除機能に取り組んでいます。私は今、最初のケースに取り組んでいます。これは正しいと思いますが、再帰的に実行できるのか、それともより効率的に実行できるのか疑問に思います。どんな助けでも大歓迎です。BSTSearchがノードを検索し、ノードisLeaf
がリーフの場合はtrueを返し、各ノードには親へのアクセスを許可するポインターがあると想定します。
void
BinarySearchTree::BSTDelete(int x, BSTNode *node){
BSTNode *deleteNode;
deleteNode = BSTSearch(x,node);
if(isLeaf(deleteNode)){
if(deleteNode->sortkey > (deleteNode->parent)->sortkey){
delete (deleteNode->parent)->right;
(deleteNode->parent)->right = NULL;
}
else{
delete (deleteNode->parent)->left;
(deleteNode->parent)->left = NULL;
}
}