C语言建立二叉树的问题

[复制链接]
查看11 | 回复1 | 2008-11-18 21:54:10 | 显示全部楼层 |阅读模式
以下是我写的程序,建立二叉树的函数 CreateTree有问题。但是我又不知道是什么问题,要怎么改。我自己在纸上推的没问题。。。哪位高手帮忙指出错误并改正啊。。不要复制别人的程序。先挂20分,感觉好了再追加30分。。谢谢。
#include
#include
#include
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=='1'){ L=NULL;}
else{

if(!(L=(BTNode *)malloc(sizeof(BTNode))))

return 0;

L->data=str;

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);
}
}
}
没有语法错误。可以编译的。不过有逻辑错误

回复

使用道具 举报

千问 | 2008-11-18 21:54:10 | 显示全部楼层
createTree里在创建左右子树时的代码改为 L->lchild=CreateTree(L->lchild,str); L->rchild=CreateTree(L->rchild,str);另外一些参考建议:主函数中这句L=(BTNode *)malloc(sizeof(BTNode));不要CreateTree第一个参数不要,把它变成函数内部的一个变量,该函数调用和声明的地方相应删去第一个参数。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行