【发布时间】:2014-09-02 16:36:22
【问题描述】:
给定一个有 N 个节点的连通无向无环图,如何在线性时间内找到跨越图中所有节点的每棵树的高度?
【问题讨论】:
给定一个有 N 个节点的连通无向无环图,如何在线性时间内找到跨越图中所有节点的每棵树的高度?
【问题讨论】:
改写:给定一棵无根树 T,对于 T 的每个顶点 v,计算有根树 T(v) 的高度,该有根树 T(v) 是通过在 v 处生根 T 导出的。
首先为 T 选择一个任意根 r,得到 T(r)。从叶到根扫描 T(r),为每个顶点 v 存储以 v 为根的 T(r) 的子树的高度。从根到叶扫描 T(r),计算,对于每个顶点 v,从 v 开始的 T 中最长路径的长度,它不访问 v 的正确后代(相对于 T(r))。第二步稍微复杂一些。您需要计算 v 及其兄弟的最大高度和次大高度,这些高度可以用于 v 的兄弟姐妹。 T(v) 的高度是它的两个标签中的最大值。
【讨论】: