C语言先序建立二叉树

来源:百度知道 编辑:UC知道 时间:2024/06/17 07:27:57
我感觉已经没有问题了啊。。为什么老出问题呢。。。程序中0代表根结点没有孩子,当我输入abc00de0000可以建立,但是输入abc00de000f00就提示内存不可读。。为什么啊。。。请高手帮忙啊。。。好了可以给50分。。因为前边问了几次没人回答,不敢挂分了。。回答出了绝对给分谢谢。。。!!

#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);

DispLeaf(L);
}
BTNode *CreateTree(BTNode *L,char str[100])
{ BTNode *k=NULL;
if(str[i]=='0') L=NULL;
else { L=(BTNode *)malloc(sizeof(BTNode));
L->data=str[i];
L->lchild=L->rchild=NULL;
i++; L->lchild=CreateTree(k,str);
i++; L->rchild=CreateTree(k,str);
}

改一下

void DispLeaf(BTNode *L)
{
if(L!=NULL)
{
if(L->lchild==NULL&&L->rchild==NULL)
printf("%c",L->data);
else
{
printf("%c", L->data);
DispLeaf(L->lchild);
DispLeaf(L->rchild);
}
}
}

现在看不来 有空看