0
我正在尝试创建一个从二叉查找树中删除节点的函数。我得到了第三种情况,节点有两个孩子在工作,但是我的代码不工作,节点有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 2012-04-29 02:35:58