#include
#include
#include
#define MaxSize 1024
typedef struct node
{
char data;
struct node *lchild;
struct node *rchild;
}BTnode;
static char a[1024];
void create(BTnode *&b,int m,int i)
{
if(i
b=(BTnode*)malloc(sizeof(BTnode));
b->data=a[i];
b->lchild=b->rchild=NULL;
create(b->lchild,m,2*i);
create(b->rchild,m,2*i+1);
}
}
void print(BTnode *&b)
{
BTnode *p=b;
if(p!=NULL)
{
printf("%c",p->data);
if(p->lchild!=NULL||p->rchild!=NULL)
{
printf("(");
print(b->lchild);
if(p->rchild!=NULL)
{
printf(",");
print(b->rchild);
}
printf(")");
}
}
}
int main()
{
BTnode *b;
int j,m=1;
char s[1024],*p;
printf("以字符串形式输入第一层节点(根节点):\n");
gets(s);
while(strlen(s)!=0)
{
j=m;
p=s;
while(m<2*j)
{
a[m]=*p;
p++;
m++;
}
printf("以字符串形式输入下一层节点(空节点以空格表示):\n");
gets(s);
}
create(b,m,1);
printf("以二叉链表表示形式输出二叉树:\n");
print(b);
printf("\n\n");
system("pause");
}