如何检查最小生成树

时间:2012-11-18 15:13:25

标签: tree minimum minimum-spanning-tree spanning-tree

如果给定的树是MST,我如何检查线性时间O(n)?

1 个答案:

答案 0 :(得分:-1)

您熟悉Union-Find流程吗? 如果您刚获得,则只需检查其连接图是否。我的意思是只询问它是否只有一个组件。 否则,维护一个映射[pair<int,int>,int]或类似的散列库来存储两个节点之间的最小权重,并比较给定的树,每个边缘是否具有最小权重。 如果没有那么你肯定它不是MST,否则你已经查找它是否已连接。如果是,那么它的MST。

在Union Find中使用树短路。并且要查询树是否已连接,您可以在联合之前轻松检查每个边缘,如果它已经联合起因,那么您确定存在一个循环而不是树,那么不是MST。