关于二叉排序树的中序遍历,不知道里面那里有问题,麻烦大家看看,急

#include<stdio.h>#include<malloc.h>typedefstructbitnode{intdata;structbitnode*lchild,... #include<stdio.h>
#include<malloc.h>

typedef struct bitnode
{
int data;
struct bitnode *lchild,*rchild;
}Bitnode,*bitree;

bitree insert_bitree(Bitnode *bt,int k)
{
bitree p;

if(k<bt->data)
{
if(bt->lchild=NULL)
{
p=(Bitnode*)malloc(sizeof(Bitnode));
p->data=k;
p->lchild=p->rchild=NULL;
p->lchild=k;
}

else
{
insert_bitree(p->lchild,k);
}
}

else
{
if(bt->rchild=NULL)
{
p=(Bitnode*)malloc(sizeof(Bitnode));
p->data=k;
p->lchild=p->rchild=NULL;
p->rchild=k;
}

else
{
insert_bitree(p->rchild,k);
}
}

return bt;
}
bitree init_bitree()
{
Bitnode *bt;
int a;
bt=(Bitnode*)malloc(sizeof(Bitnode));

printf("请输入数列,并以第一个作为根节点,以回车键结束:\n");
scanf("%d",&a);

bt->data=a;
bt->lchild=NULL;
bt->rchild=NULL;

scanf("%d",&a);
while(a)
{
insert_bitree(bt,a);
scanf("%d",&a);
}

return bt;
}

bitree inorder(bitree bt)
{
if(bt=NULL)
printf("wrong\n");
inorder(bt->lchild);
printf("%d",bt->data);
inorder(bt->rchild);

return bt;
}

int main(void)
{
bitree bt;
int a;
a=0;
bt=init_bitree();
printf("中序遍历后的数列:");
bt=inorder(bt);

return 0;
}
展开
 我来答
百度网友beeeb23
2011-06-05 · TA获得超过118个赞
知道小有建树答主
回答量:260
采纳率:0%
帮助的人:79.1万
展开全部
if(k<bt->data)
{
if(bt->lchild=NULL)
{
p=(Bitnode*)malloc(sizeof(Bitnode));
p->data=k;
p->lchild=p->rchild=NULL;
p->lchild=k; // p->lchild->data=k; 两边的数据类型要一致哦
}

else
{
insert_bitree(p->lchild,k);
}
}

else
{
if(bt->rchild=NULL)
{
p=(Bitnode*)malloc(sizeof(Bitnode));
p->data=k;
p->lchild=p->rchild=NULL;
p->rchild=k; // p->rchild->data=k; 这个也是
}

运行了会导致堆栈溢出,思路有问题吧,另外用malloc申请内存 还要 free
追问
remalloc吗?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式