C-

 
 1 #include <stdio.h>
 2 #include <malloc.h>
 3 typedef struct node1{
 4     char data;
 5     struct node1 *lchild,*rchild;
 6 }node1,BTCHINALR;
 7 
 8 BTCHINALR *createbt(){
 9     BTCHINALR *q;
10     struct node1 *s[30];
11     int j,i,x;
12     printf("建立二叉树,输入结点对应的编号和值,编号和值之间用逗号隔开\n\n");
13     printf("i,x=");
14     scanf("%d,%c",&i,&x);
15     while(i!=0 && x!='$'){
16         q=(BTCHINALR *)malloc(sizeof(BTCHINALR));
17         q->data=x;q->lchild=NULL;q->rchild=NULL;
18         s[i]=q;
19         if(i!=1){
20             j=i/2;
21             if(i%2==0){s[j]->lchild=q;
22             }
23             else{
24                 s[j]->rchild=q;
25             }
26         }
27             printf("i,x=");
28             scanf("%d,%c",&i,&x);
29         } 
30         return s[1];
31     }     
32 
33 
34 void inorder (BTCHINALR *bt){
35     if(bt!=NULL){
36 
37      inorder (bt->lchild);
38     printf("%c ",bt->data);
39      inorder(bt->rchild);}
40 } 
41 void preorder (BTCHINALR *bt){
42     if(bt!=NULL){
43         printf("%c ",bt->data);
44         preorder (bt->lchild);
45         preorder (bt->rchild);
46     
47     } 
48 }
49 void laorder(BTCHINALR *bt){
50     if(bt!=NULL){
51         laorder (bt->lchild);
52         laorder (bt->rchild);
53         printf("%c ",bt->data);
54     }
55 }
56 main(){
57     BTCHINALR *bt;
58     char ch;
59     int i;
60     bt=createbt();
61     printf("\n中序遍历二叉树");
62     inorder(bt);
63     printf("\n"); 
64     printf("\n先序遍历二叉树");
65     preorder(bt);
66     printf("\n"); 
67     printf("\n后序遍历二叉树");
68     laorder(bt);
69     printf("\n"); 
70      } 
View Code

测试结果:

猜你喜欢

转载自www.cnblogs.com/Catherinezhilin/p/9089801.html
C-