algorithm - 树中的中心节点

标签 algorithm graph tree

给定一棵树,如何找到树中的中心节点,使得中心节点到其他节点的距离最小(假设每条边都有单位权重)?我正在尝试使用 DFS,但是否可以在线性时间内完成?

最佳答案

不断从树中删除叶节点,直到只剩下一个节点(如果只剩下两个节点,请删除其中任何一个)。该节点最小化从它到每个其他节点的最大距离。

例子:

   *                 *              
  / \                 \
 *   *                 *              *
      \                 \              \
       *      =>         *     =>       *    =>   *
        \                 \                     
         *                 *
          \
           *

要在线性时间内实现这一点,请将所有初始叶节点插入 FIFO queue 中.对于每个节点,还存储其子节点的数量。从队列中删除元素时,减少其父元素的子元素数量。如果此数字变为零,则将父级插入队列。

关于algorithm - 树中的中心节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5055964/

相关文章:

algorithm - 如何比较R305的两个指纹模板

c - 在二叉树中插入一个元素

java - 获取两个图顶点之间的边列表

algorithm - 平衡 Controller 输入和输出的技术

algorithm - 如何找到具有 k 个负加权边的最短路径?

java - 如何生成 Java 调用图,基于 Eclipse 的解决方案

python - 在美国 map 上绘制点

javascript - 从单词创建树/特里

java - 递归搜索非二叉树中的节点

algorithm - 为什么循环比循环体多执行一次?