求帮助 关于二叉树的建立递归遍历的问题看了好久 就是看不到拿出错喽 望有经验的人指点
#include<stdio.h>#include<stdlib.h>
#define DATATYPE2 char
typedef struct nodel
{
DATATYPE2 data;
struct nodel *lchild, *rchild;
}BTCHINALR;
BTCHINALR *createbt(BTCHINALR *bt)//二叉树的建立
{
struct nodel *s[30];
int j,i;
char x;
printf("i,x=");scanf("%d,%c",&i,&x);
while(i!= 0 && x!='$')
{
bt=(BTCHINALR*)malloc(sizeof(BTCHINALR));
bt->data=x;
bt->lchild=NULL;
bt->rchild=NULL;
s[i]=bt;
if(i!=1)
{
j=i/2;
if(i%2==0)
s[j]->lchild=bt;
else
s[j]->rchild=bt;
}
printf("i,x=");scanf("%d,%c",&i,&x);
}
return s[1];
}
DATATYPE2 *preorder(BTCHINALR *bt)//递归先序遍历;
{
if(bt!=NULL)
{
printf("%c ",bt->data);
preorder(bt->lchild);
preorder(bt->rchild);
}
}
void main()
{
BTCHINALR t;
BTCHINALR *p=&t;
createbt(p);
preorder(p);
// printf("%c",p->data);
}