加权快速联合算法中节点与根的平均距离?

时间:2012-02-11 19:16:12

标签: algorithm tree binary-tree

Compute the average distance from a node to the root in a worst-case tree of 
2^n nodes built by the weighted quick union algorithm?

这是C ++中的算法练习(Robert Sedgewick)。

我知道距离最差的情况,但有人可以建议我正确计算平均距离吗?

最坏的情况是合并2个树和相同数量的节点。让我们说合并2树每个有2 ^ n个节点,结果树[=大小2 ^( n + 1 )个节点]将有 n + 1 max 任何节点的距离从根(合并后超过1)。

在最坏的情况下 - 如果树大小为2 ^ n,则从根到任何节点的距离始终小于n。

如果2 ^ n节点树的最大距离为n,我们如何计算平均距离?

1 个答案:

答案 0 :(得分:1)

最糟糕的情况就像你说的那样,你总是添加两棵相同高度的树。为了实现它,你需要:2棵高度为n-1的树,为了达到它,你需要4棵高度为n-2的树,.......

最后,你需要n棵树高1,n / 2棵树高2,......,1树高n

由于这是你的作业,我将通过暗示你如何继续来完成:

使用前瞻性观察,并按照算法构建树木并“实现”最坏情况。请注意每个深度中有多少叶子 - 如果您以这种方式构建树[从私有案例开始,n = 1,2,3并查看它如何“行为”]
如果你需要正式证明它 - 它应该可以通过高度[n]的归纳来完成。