练习的程序,有错指出。
#include<stdio.h>
#include<malloc.h>
typedef struct node
{
char a;
struct node *left;
struct node *right;
}root;
root *create()
{
root* p;
root* s[100];
int i,j;
char c;
printf("i and c=");
scanf("%d %c",&i,&c);
while(i!=0&&c!='#')
{
p=(root*)malloc(sizeof(root));
p->a=c;
p->left=NULL;
p->right=NULL;
s[i]=p;
if(i!=1)
{
j=i/2;
if(i%2==0)
s[j]->left=p;
else
s[j]->right=p;
}
printf("i and c=");
scanf("%d %c",&i,&c);
}
return s[1];
}
void inorder(root* t)
{
if(t)
{
inorder(t->left);
printf("%c ",t->a);
inorder(t->right);
}
}
void pre(root* t)
{
if(t)
{
printf("%c ",t->a);
pre(t->left);
pre(t->right);
}
}
void post(root * t)
{
if(t)
{
post(t->left);
post(t->right);
printf("%c ",t->a);
}
}
int main()
{
int a;
root* bt;
bt=create();
while(1)
{
printf("中序遍历请按1,先序遍历请按2,后序遍历请按3:");
scanf("%d",&a);
switch(a)
{
case 1:
inorder(bt);
printf("\n");
break;
case 2:
pre(bt);
printf("\n");
break;
case 3:
post(bt);
printf("\n");
break;
default:
break;
}
}
return 1;
}
![](https://img-my.csdn.net/uploads/201207/03/1341278635_4520.png)