1

二分探索ツリーから削除しようとしていますが、デバッガーでこのエラーが引き続き発生し、修正する方法がわかりません。このコードは正しいですか?

プログラムは信号 EXC_BAD_ACCESS を受信しました。メモリにアクセスできませんでした。理由: std::string::compare () のアドレス: 0x0000000000000000 0x00007fff8cc17fe2 の KERN_INVALID_ADDRESS

void remove( const Comparable & x, BinaryNode *& t )
{
    if (t != NULL)
    {
        if(t->element.find(x) != std::string::npos)
        {
            if( t->left != NULL && t->right != NULL ) // Two children
            {
                t->element = findMin( t->right )->element;
                remove( t->element, t->right);
            }
            else
            {
                BinaryNode *oldNode = t;
                t = ( t->left != NULL ) ? t->left : t->right;
                delete oldNode;
                cout << "Successly deleted!" << endl;
            }
        }
        if(x < t->element)
        {
            remove(x, t->left);
        }
        else
        {
            remove(x, t->right);
        }
    }
    else 
    {
        cout << x << "<-could not delete?" << endl;            
    }     
}
4

1 に答える 1