zoukankan      html  css  js  c++  java
  • 树上乱搞

    树的重心:
    定义:
    即对于树中每一个节点,计算他所有子树中节点数最大的点,这个值最小就是就重心。
    其实就是说:对于一个无向图,任选一个点,把他搞成一个树,子树里节点数最大最小,这个点就是重心,因为使以重心为根建立树更加平衡,
     
    树的重心的性质: 
     
    1 . 以树的重心为根时,所有子树的大小都不超过整棵树大小的一半。 
     因为重心平衡。
     
    2 . 树中所有点到某个点的距离和中,到重心的距离和是最小的;如果有两个重心,那么到它们的距离和一样。
    因为重心使得树更加平衡。
     
    3 .  把两棵树通过一条边相连得到一棵新的树,那么新的树的重心在连接原来两棵树的重心的路径上。
    因为
     
    4 .  在一棵树上添加或删除一个叶子,那么它的重心最多只移动一条边的距离。
    因为 一棵树的重心不会离叶节点很近。
     
    如何求树的重心?
     
    dfs预处理出每个节点的的子树大小,
    枚举每一个点,取最小值,复杂度  O(n+m)
    想的太多,做的太少;
  • 相关阅读:
    面试问题
    知识点整合
    前端错误
    基于.NET平台常用的框架整理
    BFC和haslayout
    javascript面向对象
    javascript变量的作用域
    2014-05-26 总结
    2014-05-23 总结
    PHP实现mvc模式的思想
  • 原文地址:https://www.cnblogs.com/littlerita/p/12684454.html
Copyright © 2011-2022 走看看