在二叉搜索树中n插入序列的摊余成本是多少?

时间:2012-11-17 02:12:07

标签: algorithm binary-search-tree amortized-analysis

如何计算二元搜索树中 n 插入序列的摊销成本?输入序列是随机的,每个插入添加一个节点。

2 个答案:

答案 0 :(得分:2)

我们希望能够分析单个操作的时间并对一系列操作进行平均。我们可以遵循摊销分析技术。

定义1

假设我们有一个支持某些操作的数据结构。让T (n)成为在此数据结构上执行任何n此类操作序列的最坏情况时间。然后,每个操作的摊销时间定义为T(n)/n.source

因为你有一个二进制搜索树,这意味着在最坏的情况下你会有一个链表(左边的所有元素或右边的所有元素)。

如果您有n插入操作T(n) = 1+2+...n = (n * (n-1)) / 2 = (n^2 - n) / 2.

定义1每次操作的摊销时间=(n - 1)/ 2. O(n)

也许我解释错了,所以如果你这么想请评论。

答案 1 :(得分:0)

通常,您可以为随机插入序列生成粗略平衡的二叉树,这意味着平均节点高度与log(n)成比例(有关说明,请参阅Wikipedia)。摊还时间=总时间/操作次数。总时间等于平均高度*元素数,或O(n * log(n))。由于总时间为O(n * log(n)),因此摊销时间为O(log(n))。