首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >2-3BST树的查找算法

2-3BST树的查找算法
EN

Stack Overflow用户
提问于 2012-01-20 03:48:19
回答 1查看 345关注 0票数 1

有没有一种算法,在给定2-3 tree T和指向树中某个节点v的指针的情况下,算法可以改变节点v的关键字,使得T仍然是一个合法的2-3树,其摊销效率为O(logn/logn)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-20 04:04:41

不是的。

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

代码语言:javascript
运行
复制
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后,树都是合法的。在T的所有元素和A的所有元素上激活f后,树是合法的,并包含所有元素。因此,从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不存在。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8932324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档