计算最小生成树的高度

时间:2017-05-11 14:19:34

标签: java

我需要一个JAVA代码,可以帮助我找到最小生成树的高度。 基本上我正在寻找延伸 Prim's / Kruskal的算法不仅给出了MST的高度,还给出了它的高度。

提前致谢。

2 个答案:

答案 0 :(得分:0)

我不是在这里编写代码,只是给你一个提示。
在每个节点中保留一个变量,用于存储该节点的高度/深度。

因此,起始节点的深度将为0. 现在,无论何时向MST添加边缘,都要将新节点的深度增加1


目前,您具有以下已发现的具有以下深度的节点。
a 0
b 1
c 1

现在假设您要将 c 的边缘添加到 d ,因此节点的深度< strong> d 将深度(c)+1 ,即1 + 1 = 2。

此外,您可以在算法的每个步骤中跟踪所有节点之间的最大深度。
所以,最后回答将是树的所有节点之间的最大深度。

答案 1 :(得分:0)

tree's centers中的一个为根顶点,计算所选中心到叶节点的最大距离。

高度可以通过以下方式计算:

  • 设置高度为0
  • 同时至少有 3 个剩余的顶点:
    • 删除所有叶子顶点
    • 高度:=高度+1
  • 如果还有 2 个顶点:
    • 高度:=高度+1

剩余的顶点是树的中心。 时间复杂度为 O(n)。

一种计算高度的实用方法是将所有叶子节点组合成一个作为根的节点,然后计算该修改的 MST 和高度作为从生成的根节点到新生成的叶子的最大距离节点。