定义:n个节点的树,任选一个节点V0,找到距离它最远的节点V1,再找距离V1最远的节点V2,edge(V1,V2) 即为树的直径.
理解:edge(V0,V1)一定会经过root(不理解的话你画个图试试~),则edge(root,V1)即为距离root最长,或次长的边.
因此,再从V1出发,找距离V1最远的节点V2,edge(V1,V2)必定通过root,所以可以看成是找距离root最远的节点V2(不能回头搜索V1),
所以树的直径为:edge(V1,root)+edge(root,V2) 且V1,V2必定为叶子,如果不是叶子,那它必定还能向下搜索,从而存在更长的边.
典型题目:大臣的旅费
时间: 2024-10-06 15:46:15