二叉树的创建及递归的先,中,后序遍历

来源:互联网 发布:域名阻断是怎么回事 编辑:程序博客网 时间:2024/06/05 07:45

练习的程序,有错指出。

#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;elses[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;}



原创粉丝点击