prufer编码
prufer编码是用来表示一棵无根树的编码,如果树的节点为n个,那么编码的长度为n-2,一棵无根树只对应一个编码,一个编码只能得出一个无根树。
编码方式是:
这是一颗无根树,这课树的prufer编码为5,5,4,4,4,6。
首先选这棵树叶子中编号最小的点,将这个点删除,并且把它的邻接点加入一个数组中,例如第一个删除的节点为1,并且把5加入数组中。删除节点后形成一棵新的树,再在新树中删除最小的节点,并且把邻接点加入数组中,,这样重复以上步骤,知道树中最后剩余两个点的时候终止操作。这时候数组中的便是prufer编码。
由prufer编码来重建这棵树的方法是:
假如prufer编码为(a1,a2,a3,a4,a5,.....an-2)在上述数组中,在数组最后加入n这个值,这样便形成了数组中包含n-1个节点,例如上述为5,5,4,4,4,6,8。
然后取不在数组中的最小值为b1,则b1与a1是邻接点,在数组中删除a1,再在剩下的数中选取不为b1,且不在数组中的最小值为b2,则b2与a2是邻接点,这样依次循环下去直到结束,这样便形成了一棵树。
Cayley定理:不同的n节点标号树的数量为n^(n-2)。