算法导论 CLRS 22.2-7 解答

it2022-05-09  35

使用分治法解决, 假设树的根为root, 则树的直径对应的路径P有如下三种情况

 1. P在左子树中,

 2. P在右子树中,

 3. P经过了根root,此时P必然为Lmax --> root --> Rmax, Lmax为左子树中深度最大的节点; 等价于左子树高度+右子树高度+1

Diameter(N) = max{ Diameter(Left), Diameter(Right), Height(Left)+Height(Right)+1 }

T(n) = 2T(n/2) + f(n)

f(n)为计算第三种情况的时间, 我们可以先通过后序遍历计算出以每个节点的的高度,需要O(n), 此时f(n)=O(1),

根据master method, T(n) = O(n)

转载于:https://www.cnblogs.com/ellusak/archive/2012/07/27/2611271.html

相关资源:各显卡算力对照表!

最新回复(0)