//删除结点 ,从p开始搜索含x的结点,通过p返回新根
template
bool BST::Remove(K x,BSTNode* &p)
{
BSTNode *temp;
if(p!=NULL)
{
if(xdata) Remove(x,p->leftChild);
else if(x>p->data) Remove(x,p->rightChild);
else if(p->leftChild!=NULL&&p->rightChild!=NULL)
{
temp=p->rightChild;
while(temp->leftChild!=NULL) temp=temp->leftChild;
p->data=temp->data;
Remove(p->data.number,p->rightChild);
}
else
{
temp=p;
if(p->leftChild==NULL) p=p->rightChild;
else p=p->leftChild;
delete temp;
return true;
}
}
return false;
}
殷人昆的数据结构上的代码
问题1:无论删除是否成功都返回false
问题2:为什么不能用BSTNode* 作参数类型