将重复键插入 2-3-4 树

Inserting Duplicate Keys into a 2-3-4 Tree

当只向 2-3-4 树中插入几个重复的键时,很容易找到有序的后继者,插入那里,并保持树 运行 顺利。但是,一旦添加了许多相同的键,就无法再以相同的方式搜索树,因为您将在左右子节点中都有重复的键(最终无法找到其中的一些)。如果不使用辅助列表来存储重复项,如何避免这种情况?是否需要调整搜索功能或插入功能?

键控数据结构中的键根据定义是唯一的;不唯一的东西不是(记录)键,尽管它们可能是复合键的一部分。

处理这种情况的最常见和最简单的方法是扩展密钥,方法是使用记录数据中包含的适当内容,或者添加一些任意的消歧信息(时间戳、计数器等)新 'key' 被插入到树中。

如果你把 dupes 放入你的 2-3-4 树中,那么你破坏了它的不变量,它不再是一个 2-3-4 树(只是一堆非常相似的数据)。

通过仔细编码,当然可以实现不依赖于唯一可识别记录的 2-3-4 树(或其他 B 树);但是,很难看出重点是什么。这就是为什么我见过的每个数据库系统都实施上述解决方案,即向 'key' 添加一些内容以使其独一无二。