在2-3 BST树中查找算法

时间:2012-01-19 19:48:19

标签: algorithm data-structures

是否存在具有给定2-3 tree T的算法和指向所述树中某个节点v的指针,算法可以更改节点v的密钥,因此T将保持合法的2-3树, O(logn / loglogn)摊销效率?

1 个答案:

答案 0 :(得分:2)

没有。
假设有可能,使用算法f,我们将展示我们可以对O(n*logn/loglogn)时间复杂度的数组进行排序。

sort array A of length n:
(1) Create an  2-3 tree of size n, with no importance to keys. let it be T.
(2) store all pointers to nodes in T in a second array B.
(3) for each i from 0 to n:
   (3.1) f(B[i],A[i]) //modify the tree: pointer: B[i] new value: A[i]
(4) extract elements from T back to A inorder.

<强>正确性:
每次激活f后,树都是合法的。完成对f的所有元素和T的所有元素的激活A后,该树是合法的并包含所有元素。因此,从A中提取元素,我们返回已排序的数组。

<强>复杂性:
(1)创建一个树[不重要我们放置哪些键] O(n)我们可以将0放在所有元素中,这没关系
(2)迭代T并创建BO(n)
(3)激活fO(logn/loglogn),因此调用它n次为O(n*logn/loglogn)
(4)提取元素只是一个遍历:O(n)
因此:总复杂度为O(n*logn/loglogn)

但排序是基于比较算法的Omega(nlogn)问题。矛盾。
结论:期望的f不存在。