树(即无环图)的顶点,用整数 1,2,…,n 编号。Prufer 码是按如下步骤构造的树:找到编号最小的叶结点(只有一条边与该顶点相连)。将该叶结点,及其相连的那条边,从图中删掉。同时,记下与它连接的那个结点的编号。重复上面的步骤,直到剩下最后一个结点(顺便说一下,这个数就是 n)。写下来的 n-1 个数的序列,就是该树的 Prufer 码。
编程任务:根据输入的树,计算该树的 Prufer 码。描述树的语法规则如下:
T ::= "(" N S ")" S ::= " " T S
| empty
N ::= number
也就是,树的周围有括号。第一个数是根结点编号,后面跟有任意个子树(也可能一个也没有),中间有一个空格。例如,图 2-4 所示的树,就是输入样例中的第一行。
注意:根据上面给出的描述,树的根结点也可能就是一个叶结点。为便于说明,我们指定一些结点作为根结点。通常,我们将正在处理的树称为"unrooted tree"。