与树相关的算法
1.树的直径
须知:对于一棵加权树,权值定义为树中两个结点之间的距离,两个结点间的最远距离即为树的直径。最远距离的两个结点对应树中的两个叶子结点,否则两个结点不构成最远距离。
M-1:动态规划
由于两个结点都是属于树的端结点(叶子结点),那么对两个结点向上朔源必会得到一个公共的祖先结点 x。从 x 出发求出其到其子结点的最大距离,用动态规划思想可以求出其到其叶子结点的最远距离。
d[x] = max{d[yi] + edge(x, yi)}
记经过x结点的两个结点的长度为f[x],则经过x结点的两个结点的最远距离为max(f[x])

浙公网安备 33010602011771号