2 qq 34646580 qq_34646580 于 2016.04.13 15:22 提问

二叉排序树的C++实现,编译通过,无法运行

#include
using namespace std;
struct tree{
tree lchild;
tree*rchild;
int data;
};
bool serchBST(tree *T,int key ,tree*f,tree
&p);
void insertBST(tree*T,int key);
bool serchBST(tree T,int key ,tree *f,tree *&p)
{
if(!T)
{p=f;return false;}
else if(T->data==key)
{p=T;return true;}

else if(keydata)
return serchBST(T->lchild,key,T,p);
else
return serchBST(T->rchild,key,T,p);
}
void insert(tree*T,int key)
{
tree*p=NULL;
if(!serchBST(T,key,NULL,
&p))
{
tree *s=new tree;
s->data=key;
s->lchild=s->rchild=NULL;
if(keydata)
p->lchild=s;
else
p->rchild=s;
delete s;
}

}
int main()
{
tree a;
tree p=NULL;
a.data=62;
a.lchild=a.rchild=NULL;
insert(&a,77);
cout<<serchBST(&a,77,NULL,
&p);
}
代码如上所示,编译通过,算法没问题,但用VS调试的无法运行,serch函数,指针f指向T的双亲,初始调用NULL。查找成功,则指针p指向该元素结点,否则指向查找路径上访问的最后一个结点。感觉是insert函数有问题,请高手解答

2个回答

CSDNXIAOD
CSDNXIAOD   2016.04.13 15:33

二叉排序树_C++实现
二叉排序树的C++实现
二叉排序树的实现
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

qq423399099
qq423399099   Ds   Rxr 2016.04.13 15:44

有很多地方少*号,if(keydata)也看不懂,难道是if(key==T->data)?不知道是不是复制粘贴的问题?
建议楼主重新发一下
把代码放在代码标识里

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!