如何将树节点合并到一个节点

时间:2017-04-17 10:50:14

标签: algorithm data-structures graph-algorithm

希望我的问题不会重复。 我想知道是否存在将树中的某些节点合并到新树中的算法,以便新树中的节点由旧树中的某些节点组成?

为了解释我的想法,我画了一个图来解释这个问题。

输入:原始树。

输出:一棵新树。必须满足以下条件才能满足新树:

  1. 新树中的节点数应为固定数 k
  2. 新树中的每个节点必须由原始树中的节点组成。例如,第二图中的节点A包含第一图的节点1,3和4。 secod图中的节点D包含第一个图中的节点9,12和13。
  3. 如果原始树的一个节点包含在新树的节点中,则它不能出现在新树的另一个节点中。
  4. 新树中的节点不一定必须是原始树的子树。例如,第二个图中的节点C包含第一个图的6,7和10,它不是原始图的子树。因为原始图中的节点6和节点7都连接到原始树中A的虚线区域中的节点,所以它们可以被分组在第二个图的节点C中。
  5. 目前,我只想将原始树转换为具有 K 节点数且符合上述条件的新树。对于给定的树,有许多解决方案。例如,图3和图4说明了原始树的另一种解决方案。它还有4个节点。

    enter image description here

    enter image description here

    enter image description here

    enter image description here

1 个答案:

答案 0 :(得分:0)

您需要输出的添加条件或所需属性,否则它非常简单:

  • 从叶节点开始,将K - 1个节点复制到输出:B = {11}, C = {12}, D = {13}

  • 将所有其他节点分组到一个K-th节点:A = {1,2,3,4,5,6,7,8,9,10}