0
バイナリ検索ツリーからノードを削除する関数を作成しようとしています。私は2つの子供が働いているノードで3番目のケースを持っていますが、私のコードはそれが動作しませんノードは1つまたは子供を持っていません。バイナリ検索ツリーからノードを削除する
ここは、本から直接コピーしたコードです。このコードは私が本から間違っていますか?
template <class elemType>
void bSearchTreeType<elemType>::deleteFromTree
(nodeType<elemType>* &p)
{
nodeType<elemType> *current; //pointer to traverse the tree
nodeType<elemType> *trailCurrent; //pointer behind current
nodeType<elemType> *temp; //pointer to delete the node
if (p == NULL)
cout << "Error: The node to be deleted is NULL."
<< endl;
else if (p->lLink == NULL && p->rLink == NULL)
{
temp = p;
p = NULL;
delete temp;
}
else if (p->lLink == NULL)
{
temp = p;
p = temp->rLink;
delete temp;
}
else if (p->rLink == NULL)
{
temp = p;
p = temp->lLink;
delete temp;
}
はい、私はその部分を持っています...それは働いていたので、私はそれを残しました。 – user1363645