0

私のBSTにはノードが1つしかありません。そのノードを削除するコードを書きましたが、まだそこにあります。更新されていないようです。ケースをテストするためだけに、これが私の簡単なコードです

void Delete(BSTree* tree, int& key)
{
    if (key == tree->key)
        tree=NULL;
}

私の BSTree クラスには親の部分がありません。値と左右のポインターだけです。コードの何が問題になっていますか? ありがとうございました!

4

1 に答える 1

1

tree実際のポインターを変更していません。渡されたポインターと同じアドレスを指している、スタックに割り当てられたポインターのみを変更しています。

BSTree *&tree元のポインターへの参照を取得して、変更が影響するようにする必要があります。

Als が指摘するように、上記に加えてメモリを解放することを忘れないでください。

于 2012-12-01T06:10:43.693 に答える