练习的程序,有错指出。
#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; }