如何将树分成两个子树

时间:2012-02-08 08:51:21

标签: c++ visual-c++ tree graph-theory minimum-spanning-tree

我有一个对称的2d数组“myMSTdata [] []”点表示最小生成树MST,如果没有表示边缘权重的边缘或实际值,则值为0,现在我需要对此进行分区将树分为两个子树(第1部分,第2部分),其中切割标准是具有最大权重的边缘。然后重复保持对较大大小子树进行分区(这意味着具有更多节点数的子树),直到较大大小子树中剩余的节点数为K.

1 个答案:

答案 0 :(得分:0)

建议使用邻接列表进行此类操作,因为

  1. 您需要重复分隔顶点
  2. 边缘数< $ n $顶点数。
  3. 大运行时间的好处。
  4. 我可以知道您正在考虑的复杂性吗?

    如果您对任何复杂性感到满意,我建议重复使用DFS,因为您正在使用树,重复的DFS将覆盖所有边缘和顶点。在最坏的情况下,运行时间约为O(n ^ 2)。