合并两个splay树

时间:2010-10-04 17:24:52

标签: algorithm tree

如何将两个展开树与log(n)的摊余成本合并?

1 个答案:

答案 0 :(得分:0)

我假设您要合并的展开树每个都包含n个对象。 (即总共有2n个对象)。然后我认为不可能将它们与摊销的log(n)费用合并,除非你强加一些进一步的假设。如果您没有关于树中包含的对象的任何信息,则必须至少查看两棵树之一的每个元素,因此成本为O(n)

但是,如果您可以对对象做出某些假设,则可以在O(log(n))中执行此操作。您可以提取某些子树,以便将整个子树插入到另一个splay树中。但是,我不知道如何获得O(log(n))的精确算法。例如,如果我们知道Tree1中的最大对象小于Tree2中的最小对象,那么我们可能只是展开Tree2的最左边节点,然后我们挂起根Tree1的新根目录下的Tree2