zoukankan      html  css  js  c++  java
  • prufer编码

    prufer编码是用来表示一棵无根树的编码,如果树的节点为n个,那么编码的长度为n-2,一棵无根树只对应一个编码,一个编码只能得出一个无根树。

    编码方式是:

    prufer编码 - 小子 - 那个小子

    这是一颗无根树,这课树的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)。

  • 相关阅读:
    基于php socket(fsockopen)的应用实例分析
    php多线程的问题
    PHP之fsockopen提交POST数据讲解
    Sort List
    Insertion Sort List
    LRU Cache
    Reorder List
    Word Break II
    Word Break
    Copy List with Random Pointer
  • 原文地址:https://www.cnblogs.com/flyptt/p/3419400.html
Copyright © 2011-2022 走看看