二叉树1

来源:互联网 发布:化妆品成分查询软件 编辑:程序博客网 时间:2024/05/01 05:12
 /********************************//***********************************/#include<stdio.h>#include<stdlib.h>#include<stdbool.h>#include<string.h>#define MaxSize 20typedef char datatype;typedef struct node {datatype data;struct node *lchild,*rchild;}*root,treenode;void init( root  *t ){*t = NULL;}void build(root  *t){char ch;scanf("%c",&ch);if(ch == '#')*t = NULL;else{(*t)=(root)malloc(sizeof(treenode));(*t)->data = ch;build(&((*t)->lchild));build(&((*t)->rchild));}}void  travel_pre(root t){if(t == NULL)return ;else{printf("%c ",t->data);travel_pre(t->lchild);travel_pre(t->rchild);}}void  travel_in(root t){if(t == NULL)return ;else{travel_in(t->lchild);printf("%c ",t->data);travel_in(t->rchild);}}void  travel_post(root t){if(t == NULL)return ;else{travel_post(t->lchild);travel_post(t->rchild);printf("%c ",t->data);}}void travel_level(root t){        root p;        root qu[MaxSize];         int front,rear;                        front=rear=-1;                      rear++;        qu[rear]=t;                                while (front != rear){front=(front+1) % MaxSize;                p=qu[front];                                      printf ("%c ",p->data);                     if(p->lchild != NULL){rear=(rear+1) % MaxSize;                        qu[rear]=p->lchild;                }                if (p->rchild != NULL){                                                                           rear=(rear+1) % MaxSize;                qu[rear]=p->rchild;}}}int main(void){root t;init(&t);printf("please input character to creat tree, '#' stands for NULL\n");build(&t);printf("ergodic in pre_oder\n");travel_pre(t);printf("\nergodic in in_oder\n");travel_in(t);printf("\nergodic in post_oder\n");travel_post(t);printf("\nergodic in level_oder\n");travel_level(t);printf("\n\n");return 0;}