查找树的所有值分配,其中每个节点的路径具有唯一元素

时间:2018-11-29 15:44:47

标签: tree graph-theory graph-algorithm

我有一棵树,我需要为每个节点分配一个值,这样对于每个节点,从该节点到根的路径就没有重复的值。我正在尝试为集合树生成所有值分配并存储它们。我一直无法解决或找到合适的算法来顺序生成这些树。任何方向或想法将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用以下算法:

  1. 从根和[1 ... m]数组开始,作为选项数组。
  2. 对于每个选项:选择一个并分配给root
  3. 在所有子项上删除该选项后,
  4. 调用递归

也许这个伪代码会更好地解释它:

function assign(root, options) {
    for each options as option:
        assign root with option
        newOptions = options - option // remove newly assign value
        for each root->childs as child:
            call assign(child, newOptions) //recursive call after removing current option
} 

options = [1...m]
assign(root, options)

这比蛮力法要复杂得多

希望有帮助!