当在2-3-4树中插入几个重复的键时,很容易找到有序后继,插入那里,并保持树顺利运行。但是,一旦添加了许多相同的密钥,就不再能以相同的方式搜索树,因为您将在左右子项中都有重复的密钥(最终无法找到其中的一些)。如果不使用辅助列表来存储重复项,如何避免这种情况?是否需要调整搜索功能或插入功能?
答案 0 :(得分:0)
根据定义,键控数据结构中的键是唯一的;虽然它们可能是复合键的一部分,但不是唯一的东西不是(记录)键。
最常见 - 也是最简单 - 处理这种情况的方法是扩展密钥,方法是使用记录数据中包含的适当内容,或者在新的&时添加一些任意消除歧义的信息(时间戳,计数器等等) #39;键'被插入树中。
如果你将dupes放入你的2-3-4树中,那么你就会打破它的不变量,它不再是2-3-4树(只是一堆非常类似的数据)。
通过仔细编码,当然可以实现2-3-4树(或其他B树),这些树不依赖于可唯一识别的记录;但是,很难看出这一点可能是什么。这就是为什么我见过的每个数据库系统都实现了上面的解决方案,即在键盘上添加一些东西。使其独一无二。