标题: 树的括号表示法

标题:

树的括号表示法

时 限:

1000 ms

内存限制:

3000 K

总时限:

3000 ms

描述:

树的括号表示法:

 先将根结点放入一对圆括号中,然后把它的子树按由左而右的顺序放入括号中,而对子树也采用同样方法处理:同层子树与它的根结点用圆括号括起来,同层子树之间用逗号隔开,最后用闭括号括起来。例如下图可写成如下形式  

(a(b,c,d,e))

            a

       /  |   |   \

      b   c   d     e

现在给定一个多叉树的括号表示法,要求你创建多叉树,并按层序输出。

输入:

多叉树的括号表示法:字符串

输出:

层序输出多叉树

输入样例:

(a(b,c,d,e))

输出样例:

abcde

提示:

树的括号表示法

1 #include <stdio.h>
2 int level(char *str,char ch)
3 {
4 int i=0,Left=0,Right=0;
5 char c;
6 c=str[0];
7 while(c!=ch)
8 {
9 c=str[i];
10 i++;
11 if(c=='(') Left++;
12 if(c==')') Right++;
13 }
14 return Left-Right;
15 }
16 int main()
17 {
18 char str[200],ch,m_lev=0;
19 char m_c;
20 int m_i=0;
21 int i=0,Left=0;
22 scanf("%s",str);
23 ch=str[0];
24 while(ch!='\0')
25 {
26 ch=str[i];
27 if(ch=='(')
28 Left++;
29 i++;
30 }
31 //printf(" %c ",str[i-2]);
32 //printf("%c %d",str[10],level(str,str[10]));
33 m_c=str[0];
34 for (m_lev=1;m_lev<=Left;m_lev++)
35 {
36 while(m_c!='\0')
37 { m_c=str[m_i];
38 if(m_c!=','&&m_c!='('&&m_c!=')')
39 {
40 if(level(str,m_c)==m_lev)
41 printf("%c",m_c);
42 }
43
44 m_i++;
45 }
46 m_i=0;m_c=str[0];
47 }
48 printf("\n");
49 return 0;
50 }

转载于:https://www.cnblogs.com/huzhongzhong/archive/2011/06/05/ane.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值