BiTNode* findr(BiTree &T)
{
if(T==NULL)
return NULL;
else
{
while(T->rchild!=NULL)
{
T=T->rchild;
}
return T;
}
}
BiTNode* del(BiTree &T)
{
if(T->rchild==NULL&&T->lchild==NULL)
return NULL;
else if(T->rchild==NULL&&T->lchild!=NULL)
return T->lchild;
else if(T->rchild!=NULL&&T->lchild==NULL)
return T->rchild;
else
{
BiTree tem;
tem=findr(T->lchild);
tem->rchild=T->rchild;
return T->lchild;
}
}
status DeleteNode(BiTree &T,KeyType e)
//删除结点。此题允许通过增加务其它函数辅助实现本关任
{
// 请在这里补充代码,完成本关任务
/********** Begin *********/
if(T==NULL)
return ERROR;
else
{
BiTree p,q,r,t;
p=T;q=T->lchild;r=T->rchild;
if(q->data.key==e)
{
p->lchild=del(q);free(q);
}
else if(r->data.key==e)
{
p->rchild=del(r);free(r);
}
DeleteNode(T->lchild,e);
DeleteNode(T->rchild,e);
return OK;
}
/********** End **********/
}