-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path15.c
75 lines (70 loc) · 1.28 KB
/
15.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include<stdio.h>
#include<stdlib.h>
typedef struct tree
{
char da;
struct tree *lc,*rc;
}*node;
char ba='\0',fa='\0';
node create_tree(void)
{
node root=NULL;
while(1)
{
ba=fa;
if(ba!='\n')
{
fa=getchar();
}
else
{
fa='\0';
}
// putchar(fa);
switch(ba)
{
case '\n':case '\0':
return root;
case '(':
root->lc=create_tree();
break;
case ',':
root->rc=create_tree();
break;
case ')':
return root;
default:
root=(node)calloc(1,sizeof(struct tree));
if(root==NULL)
{
exit(1);
}
root->da=ba;
// case '#':
if(fa==',' || fa==')')
{
return root;
}
break;
}
}
}
void traverse(node root)
{
if(root==NULL)
{
return ;
}
putchar(root->da);
traverse(root->lc);
traverse(root->rc);
return ;
}
int main()
{
node root;
fa=getchar();
root=create_tree();
traverse(root);
return 0;
}