问题 1915 --Code the Tree

1915: Code the Tree

时间限制: 1 Sec  内存限制: 128 MB
提交: 14  解决: 6
[提交][状态][命题人:]

题目描述

树(即无环图)的顶点,用整数 1,2,n 编号。Prufer 码是按如下步骤构造的树:找到编号最小的叶结点(只有一条边与该顶点相连)。将该叶结点,及其相连的那条边,从图中删掉。同时,记下与它连接的那个结点的编号。重复上面的步骤,直到剩下最后一个结点(顺便说一下,这个数就是 n)。写下来的 n-1 个数的序列,就是该树的 Prufer 码。

编程任务:根据输入的树,计算该树的 Prufer 码。描述树的语法规则如下:

T ::= "(" N S ")" S ::= " " T S

| empty

N ::= number

也就是,树的周围有括号。第一个数是根结点编号,后面跟有任意个子树(也可能一个也没有),中间有一个空格。例如,图 2-4 所示的树,就是输入样例中的第一行。

注意:根据上面给出的描述,树的根结点也可能就是一个叶结点。为便于说明,我们指定一些结点作为根结点。通常,我们将正在处理的树称为"unrooted tree"。

输入

输入包含多组测试例。每个测试例一行,按上面的规则描述一棵树。遇到 EOF 输入结束。

1≤n≤50。

输出

对每组测试例,输出一行,是该树的 Prufer 码。数字之间用空隔分开,行末没有空格。
样例输入
Copy
(2 (6 (7)) (3) (5 (1) (4)) (8))
(1 (2 (3)))	
(6 (1 (4)) (2 (3) (5)))
样例输出
Copy
5 2 5 2 6 2 8
2 3
2 1 6 2 6

提示

来源

 

[提交][状态]