Free考研资料 - 免费考研论坛

 找回密码
 注册
打印 上一主题 下一主题

[求助]二叉排序树删除结点的问题

[复制链接]
跳转到指定楼层
楼主
yeahe83 发表于 06-1-7 04:14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
二叉排序树,删除结点的问题。

Status Delete (Bitree &p)
{
    if(!p->rchild)  //右子树空,只需要重接它的左子树
    {
        q=p; p=p->lchild; free(q);
    }
    ....
}

先把*q也指到了『p结点』,
然后把*p指到了『p结点』的左孩子,
最后把*q指针指着的『p结点』删了。

没把『p结点』的父母指到原来『p结点』的左孩子啊,只有个*p在指着?

求助,谢谢!
沙发
lyronly 发表于 06-1-7 10:46:49 | 只看该作者
有指者的就行了 没准在最后加上了 程序没给全啊!
板凳
 楼主| yeahe83 发表于 06-1-7 14:59:53 | 只看该作者
后面是else if 和else了,3种情况没有相关。

见 严蔚敏 数据结构C语言版 p.230

[ 本帖最后由 yeahe83 于 2006-1-8 02:44 PM 编辑 ]
地板
lyronly 发表于 06-1-8 12:03:52 | 只看该作者
严蔚敏 数据结构C语言版 没看过 楼主还是把整个程序看仔细点好
5#
freezesun 发表于 06-1-12 00:48:53 | 只看该作者
多看几遍就明白了。
6#
brilliantlau 发表于 06-1-15 21:43:58 | 只看该作者
else if(!p->lchild){
q=p;p=p->rchild;free(q);
}
else{
q=p;s=p->lchild;
while(s->rchild){q=s;s=s->rchild;}
p->data=s->data;
if(q!=p)q->rchild=s->lchild;
else q->lchild=s->lchild;
delete s;
}
7#
purplemoon 发表于 06-1-20 18:13:05 | 只看该作者
谢谢楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系我们|Free考研资料 ( 苏ICP备05011575号 )

GMT+8, 24-11-28 23:01 , Processed in 0.095442 second(s), 11 queries , Gzip On, Xcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表