Algorithm 是否有一种快速算法来合并排序的B+;树?

Algorithm 是否有一种快速算法来合并排序的B+;树?,algorithm,data-structures,tree,Algorithm,Data Structures,Tree,我正在编写一个dbm风格的数据库管理器,使用不可变的B+树作为存储介质(请参阅)。有没有一种合并两棵B+树(树可能共享节点)的快速算法?这是欧米茄(n)问题。 证明:假设它有更好的复杂性O(d)和d

我正在编写一个dbm风格的数据库管理器,使用不可变的B+树作为存储介质(请参阅)。有没有一种合并两棵B+树(树可能共享节点)的快速算法?

这是欧米茄(n)问题。
证明:假设它有更好的复杂性O(d)和d
O(n)解(实际上它当然是θ(n)):
1.将T1和T2平铺成排序阵列A1、A2。

2.如果树
A
的最大键小于或等于树
B
的最小键,则使用A。如果是这样的话,它真的很快,否则我认为你将不得不采用更复杂的算法。@Phimueme,不幸的是,只有在极其人为的情况下才是这样。是的,除了树可能共享节点之外。在这种情况下,共享节点的子节点不必迭代,因此可能存在一种算法,即
O(n)
,其中
n
是未共享的节点数,并且具有共享子节点的父节点。给定两棵树,您可以在多大的复杂度下找到共享节点?@amit,我希望有人能回答这个问题。我有一个想法,可以在两棵树上同时进行广度优先搜索,在这种情况下,
O(n)
其中
n
是非共享节点的数量。@dan共享节点是否也共享其所有子节点?因为如果不是这样的话,那么即使你设法在O(n)中排序,其中n是非共享节点,你也需要以某种方式操纵每一个共享节点——因此它们的子树也将被排序,这将是O(| V |-n),你将返回到O(n)。还是我遗漏了什么?关于查找共享节点-我想不出比BFS更好的方法(也没有证据证明没有)@amit,是的,实际节点是共享的,因为它指向同一位置的指针。