编程论坛
注册
登录
编程论坛
→
数据结构与算法
二叉排序树删除结点问题
不同认为
发布于 2015-12-12 12:33, 3804 次点击
比如只有一个结点,左子树为空, s=p;p=p-r;free(s),这样是怎么实现把右子树的值复制到要删除的那个结点上
6 回复
#2
林月儿
2015-12-12 20:57
s=p;p=p-r;free(s),
=》s=p;p=p->r;free(s);
断章取义大婶也做不到
#3
不同认为
2015-12-12 22:12
回复 2楼 林月儿
int Delete(BiTree &p)
{
BiTree q, s;
if( !p->lchild&&!p->rchild )
p=NULL;
else if(!p->lchild)
{
q=p;
p=p->rchild;
free(q);
}
else if(!p->rchild)
{
q=p;
p=p->lchild;
free(q);
}
像这样,p的指向是改变了,但原来的p地址不是给q了么,这样子有把P这个结点删除么
#4
林月儿
2015-12-13 20:44
以下是引用
不同认为
在2015-12-12 22:12:12的发言:
int Delete(BiTree &p)
{
BiTree q, s;
if( !p->lchild&&!p->rchild )
p=NULL;
else if(!p->lchild)
{
q=p;
p=p->rchild;
free(q);
}
else if(!p->rchild)
{
q=p;
p=p->lchild;
free(q);
}
像这样,p的指向是改变了,但原来的p地址不是给q了么,这样子有把P这个结点删除么
你说p指向变了。。。对但不是重点,重点是p代表的结点变了,这里的局部代码对p代表的原结点通过q删除后
接着对p操作转嫁子树
#5
不同认为
2015-12-13 21:08
回复 4楼 林月儿
只有本站会员才能查看附件,请
登录
我觉得应该长这样才对
#6
不同认为
2015-12-13 21:20
回复 4楼 林月儿
实在想不清怎么删除的
#7
不同认为
2015-12-14 20:43
回复 4楼 林月儿
哪个代码体现出p的原结点通过q删除了
1