B树的唯一性

时间:2015-12-28 16:38:01

标签: algorithm tree

假设我有一系列键值要插入到任何给定顺序的B树中。插入所有元素后,我正在对其中一些元素执行删除操作。它是否总是给出一个独特的结果(以B树的形式),或者它可以根据删除操作而有所不同?

引自wiki:

链接:https://en.wikipedia.org/wiki/B-tree

  

从内部节点删除

     

内部节点中的每个元素都充当两个分隔值   子树,因此我们需要找到一个替代分离。注意   左子树中最大的元素仍然小于   分隔器。同样,右子树中的最小元素是   仍然大于分隔符。这两个元素都在叶子中   节点,任何一个都可以是两个子树的新分隔符。   算法描述如下:

     

选择一个新的分隔符(左子树中的最大元素或右子树中的最小元素),将其从   它所在的叶节点,并用。替换要删除的元素   新的分隔符。

     

上一步从叶子中删除了一个元素(新分隔符)   节点。如果该叶节点现在不足(少于所需的叶节点)   节点数),然后从叶节点开始重新平衡树。

我认为根据删除操作,它可能会有所不同,因为上面的行以粗体字母引用。我对吗?帮助:)

1 个答案:

答案 0 :(得分:2)

如果您的问题是两个包含完全相同的键值集合的B树是否总是具有相同的节点,则答案为否。

请注意,对于例如简单的二叉树。

但是,在B树的情况下,这可能会更加明显,因为B树已经过优化,可以最大限度地减少页面更改,从而需要回写缓慢的二级存储。