关于树的直径的思考

1.当然先考虑无权直径了,具体方法:树形dp(可拓展性很强,可以带权,求出距离每个点最长路,可以两次dp,最长路和次长路,根据最长路是否经过此点利用父亲更新)

两次bfs即可

2.dp的证明就不多说,bfs证明比较好,bfs利用的是直径的性质:一个点出发,最远的点一定是某一条直径的一个端点,因此可得

怎么证明这条性质呢? 假设一条bfs路uv和一条最长路st存在,分情况讨论,若路径相交,那么明显后半段重合,反证

若不相交,则根据假设st上的任意一点dis(uv)>dis(u,x)+dis(x,t),则dis(s,x)+dis(x,v)>dis(s,t)则st非最长路,证完(不那么直观不过就是找连接两条路径的公共祖先,分为内外即可),反证,反向构造即可

至于是否带权,不太重要,不带权就bfs,带权就dp,就是这样,重点在于其证明

忘记说明,树的直径都相交于一点(反证),经过这一点的直径呈现放射状等长,(如果超过一条)

2.树的中心,性质:一定是树的直径的中心点,尽可能均匀把直径分为两半,树的中心应该只有一个(根据直径交于一点且呈放射状)

至此,完成学习,让我们探究一下动机:

贪心思考,dp思想,做法都是O(N)

你可能感兴趣的:(关于树的直径的思考)