C++ 如何将一棵树划分为两个子树

C++ 如何将一棵树划分为两个子树,c++,visual-c++,tree,graph-theory,minimum-spanning-tree,C++,Visual C++,Tree,Graph Theory,Minimum Spanning Tree,我有一个对称的2d数组“myMSTdata[][]”,其中的点表示最小生成树MST,如果没有边或实值表示边上的权重,则值为0,现在我需要将此树划分为两个子树(第1部分,第2部分),其中切割标准是具有最大权重的边。然后重复对较大的子树(即节点数较多的子树)进行分区,直到较大的子树中剩余的节点数为K。建议对此类操作使用邻接列表,因为 您需要重复分离顶点 边数

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

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

  • 您需要重复分离顶点
  • 边数<$n$顶点数
  • 大量的运行时好处 我可以知道你所看到的复杂性吗

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