zoukankan      html  css  js  c++  java
  • 树的直径与树的重心

    树的直径

    树的直径是指树上的最长简单路。

    直径的求法:两遍搜索

    任选一点w为起点,对树进行搜索,找出离w最远的点u。

    以u为起点,再进行搜索,找出离u最远的点v。

    则u到v的路径长度即为树的直径。

    ----------------------------------------------------------------

    树的重心
    树的重心:

    找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心。

    删去重心后,生成的多棵树尽可能平衡。

    树的重心可以通过简单的两次搜索求出,第一遍搜索求出每个结点的子结点数量son[u],第二遍搜索找出使max{son[u],n-son[u]-1}最小的结点。

    实际上这两步操作可以在一次遍历中解决。

    对结点u的每一个儿子v,递归的处理v,求出son[v],然后判断是否是结点数最多的子树,

    处理完所有子结点后,判断u是否为重心。

  • 相关阅读:
    Java中的synchronized以及读写锁
    Java中的HashMap低层实现原理
    AOP
    PageRank算法
    Python基础
    RF创建测试库
    RF-RequestsLibrary
    selenium webdriver
    RF开发关键字(四)
    RF关键字(三)
  • 原文地址:https://www.cnblogs.com/adelalove/p/8848871.html
Copyright © 2011-2022 走看看