算法导论22.2-7题:树T=(V,E)的直径(diameter)定义为max(u,v),亦即,树的直径是树中所有最短路径长度中的最大值。试写出计算树的直径的有效算法,并分析算法的运行时间。
如果这里的树T是简单的二叉树或者多叉树,我们可以用递归来解决(Diameter(tree T)表示T的直径);
1. 求出T左子树的最深节点的深度Dleft,求出T右子树最深节点的深度Dright。
2. 则T的直径为:max(Dleft + Dright + 1, Diameter(T->left), Diameter(T->right))
这里使用递归是因为有可能直径不经过根节点。时间复杂度为O(n^2).