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);
}
}
}
没有语法错误。可以编译的。不过有逻辑错误 展开
#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);
}
}
}
没有语法错误。可以编译的。不过有逻辑错误 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询