int DeleteTree(BSTree &p,int height)
{ BSTree s,q;
if(p==NULL)
{ printf("没有该用户删除失败\n");
return 0;
}
if(!p->rchild ) //没有右孩子
{
q=p;p=p->lchild ;delete q;q=NULL;
}
else if(!p->lchild ) //没有左孩子
{
q=p; p=p->rchild ;delete q ;q=NULL;
}
else
{
s=p->lchild;
q=p;
while(s->rchild)
{
q=s; s=s->rchild ;
}
p->data =s->data ;
if(q!=p)
q->rchild =s->lchild ;
else
q->lchild =s->rchild ;
delete s;
s=NULL;
}
p是要删除信息的树节点
这个函数只能正常删除左右孩子不为空的节点,删除其他节点我遍历输出信息会运行错误,有谁可以帮下我吗
BlueCitizen