C语言建立二叉树的问题

以下是我写的程序,建立二叉树的函数CreateTree有问题。但是我又不知道是什么问题,要怎么改。我自己在纸上推的没问题。。。哪位高手帮忙指出错误并改正啊。。不要复制别人... 以下是我写的程序,建立二叉树的函数 CreateTree有问题。但是我又不知道是什么问题,要怎么改。我自己在纸上推的没问题。。。哪位高手帮忙指出错误并改正啊。。不要复制别人的程序。先挂20分,感觉好了再追加30分。。谢谢。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct node
{
char data;
struct node *lchild;
struct node *rchild;
}BTNode;
BTNode *CreateTree(BTNode *L,char str[100]);
void DispLeaf(BTNode *L);
int i=0;
void main()
{ BTNode *L;

char str[100];
L=(BTNode *)malloc(sizeof(BTNode));
scanf_s("%s",str);
L=CreateTree(L,str);
//printf("%c",L->data);
//DispLeaf(L);
}
BTNode *CreateTree(BTNode *L,char str[100])
{ //printf("%s",str);
if(str[i]=='1'){ L=NULL;}
else{
if(!(L=(BTNode *)malloc(sizeof(BTNode))))
return 0;
L->data=str[i];
i++;
L=CreateTree(L->lchild,str);
i++;
L=CreateTree(L->rchild,str);
}
return(L);

}
void DispLeaf(BTNode *L)
{
if(L!=NULL)
{ if(L->lchild==NULL&&L->rchild==NULL)
printf("%c",L->data);
else
{
DispLeaf(L->lchild);
DispLeaf(L->rchild);
}
}
}
没有语法错误。可以编译的。不过有逻辑错误
展开
 我来答
winds504
2008-11-18 · TA获得超过374个赞
知道小有建树答主
回答量:283
采纳率:100%
帮助的人:375万
展开全部
createTree里在创建左右子树时的代码改为
L->lchild=CreateTree(L->lchild,str);
L->rchild=CreateTree(L->rchild,str);

另外一些参考建议:
主函数中这句L=(BTNode *)malloc(sizeof(BTNode));不要
CreateTree第一个参数不要,把它变成函数内部的一个变量,该函数调用和声明的地方相应删去第一个参数。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式