数据结构实验之二叉树二:遍历二叉树



数据结构实验之二叉树二:遍历二叉树

Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic

Problem Description

已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。

Input

连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。

Output

每组输入数据对应输出2行:
第1行输出中序遍历序列;
第2行输出后序遍历序列。

 

Example Input

abc,,de,g,,f,,,

Example Output

cbegdfa
cgefdba
 
   
 
   
 
   
 
   
 
   
01 #include
02 #include
03 #include
04 using namespace std;
05 int len,c;
06 char a[55];
07 typedef struct node
08 {
09     char data;
10     struct node *l;
11     struct node *r;
12 }tree;
13 tree * creat(tree *p)
14 {
15     char x;
16     if(c < len)
17     {
18         x = a[c ++];
19         if((x == ','))
20             p = NULL;
21         else
22         {
23             p = new tree;
24             p->data = x;
25             p->l = creat(p->l);
26             p->r = creat(p->r);
27         }
28     }
29     return p;
30 }
31 void ldr(tree *p)
32 {
33     if(p != NULL)
34     {
35         ldr(p->l);
36         printf("%c",p->data);
37         ldr(p->r);
38     }
39 }
40 void lrd(tree *p)
41 {
42     if(p != NULL)
43     {
44         lrd(p->l);
45         lrd(p->r);
46         printf("%c",p->data);
47     }
48 }
49 int main()
50 {
51     tree *p;
52     while(gets(a) != NULL)
53     {
54         c = 0;
55         len = strlen(a);
56         p = creat(p);
57         ldr(p);
58         printf("\n");
59         lrd(p);
60         printf("\n");
61     }
62     return 0;
63 }

你可能感兴趣的:(数据结构实验之二叉树二:遍历二叉树)