刚刚听了jmy讲他的证明方法,大致意思就是树上的任意一点所能到达的最远距离一定会在直径的两个端点上。
但我认为反证法其实来得更快。思路如下:
证明:
反证法。假设已经用两次bfs/dfs求得的直径为(AB),且(AB)上有一点(N)。如果(AB)不是这颗树的直径,那么一定存在一条链(CD),使得(CD > AB),不妨设(CD)与(AB)的交点为(M),所以(NB > NC)即可以得到(MB > MC),可以得到(MB + MD > MC + MD)所以(CD)不是树的直径,与假设矛盾。故假设不成立,原命题成立。
证毕。