参考:https://www.cnblogs.com/Jackpei/p/10827653.html
n个结点,带编号的无根树有n^(n-2)个。
一棵有n个结点带编号的无根树,它一一对应一串长度为n-2的Purfer序。已知一串Purfer序,同样也可以还原一棵无根树。对于长度为n-2的Purfer序,每个数字的范围在1~n之间,有n种选择,所以一共有n^(n-2)种方案,每一种方案都可以还原一棵无根树。
利用这些性质可以解决一些无根树计数的问题。
1.无根树生成Purfer序。
找到标号最小的叶子点a,再找到与之相连的点b.删除a及ab之间边。同时记下b的值。重复操作,直到还剩两个结点。如下图
n=7,Purfer序为(b1,b2,b3,b4,b5)=(3,1,5,5,1)。
2.Purfer序还原无根树。
每次从1到n中找到第一个没有在Purfer序列中出现的数字,说明这个数字的度为1,为叶子点,且为数值最小的叶子点,所以应该与Purfer中第一个数字相匹配,连一条在树中的边出来,然后在两个数列中各自删去。重复操作,直至Purfer中结点删完,最后把原序列中剩下的两个点进行连接。