我試圖從二叉搜索樹中刪除,並在調試器 中不斷收到此錯誤,我不知道如何糾正它。這段代碼是否正確?從二進制搜索樹中刪除?
編程接收到的信號EXC_BAD_ACCESS,無法訪問存儲器。 原因:KERN_INVALID_ADDRESS地址:0x0000000000000000 0x00007fff8cc17fe2中的std :: string ::比較()
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;
}
}
'地址:0x0000000000000000'很可能是一個NULL指針解引用。使用調試器來追蹤它。 – 2013-10-19 06:44:57