2017-04-17 176 views
0

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

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

输入:原始树。

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

  1. 节点的新树的数量应该是一个固定的数ķ
  2. 新树中的每个节点必须由原始树中的节点组成。例如,第二个图中的节点A包含第一个图的节点1,3和4。 secod图中的节点D包含第一个图中的节点9,12和13。
  3. 如果原树的一个节点包含在新树的一个节点中,则它不能出现在新树的另一个节点中。
  4. 新树中的节点不一定必须是原始树的子树。例如,第二个图中的节点C包含第一个图的6,7和10,它不是原始图的子树。因为原始图中的节点6和节点7都连接到原始树中A点的虚线区域中的节点,所以它们可以分组在第二个图的节点C中。

目前,我只想原树可以转换为具有ķ节点数量,并且符合上述条件的新树。对于给定的树,有很多解决方案。例如,图3和图4说明了原始树的另一个解决方案。它也有4个节点。

enter image description here

enter image description here

enter image description here

enter image description here

+0

我不知道你所说的'新树由意味着什么旧树中的一些节点“,所以这可能是也可能不是你想要的:[图改写](https://en.wikipedia.org/wiki/Graph_rewriting)。如果您可以通过在节点中提供数据来更详细地解释它,那么那些试图提供帮助的人会很有帮助。另外,所有的节点都有相同的数据,是否有合并数据的规则,树是否有正常或规范的形式,等等。如果这是关于你头顶的东西以及你猜测的东西那么请在你的问题中陈述。 –

+0

这不是一个答案,而是一个猜测;请认真提供更详细的信息,以便我可以看到我的猜测是否是答案,如果是这样,我可以发布一个答案,以帮助社区和你。请记住,这是一个帮助每个人的社区论坛。 –

+0

好的,我试图说清楚我的问题。 – bios

回答

0

你需要一个附加条件或者你的输出所需的性能,否则是很简单的:

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

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

+0

感谢您的回答。如果我发现这个问题微不足道,我会删除它 – bios

相关问题