抱歉,我无法发布图片,所以我用键盘打印它们。
[6:-]
[2:4] [8:-]
[0:1] [2:3] [4:5] [6:7] [8:9]
这一个来自“数据结构和算法”,它是2-3树的图片,你可以看到父节点上的每个数据必须在他们的子节点上。
[50:90]
[20:-] [70:-] [120:150]
[10:-] [30:40] [60:-] [80:-] [100:110] [130:140] [160:-]
这篇文章来自另一本名为“数据抽象和用c ++解决问题”的书,父节点上的数据不在他们的子节点上。
哪一个是对的?
答案 0 :(得分:0)
这些都是2-3棵树,因为" 2-3"只是指每个节点拥有的子节点数。但是这些树有不同的更具体的名称。
第一个,父母从孩子那里复制钥匙,被称为" B +树":https://en.wikipedia.org/wiki/B%2B_tree
第二个,其中父键不是副本,称为" B树":https://en.wikipedia.org/wiki/B-tree
请注意,通常存在与键相关联的值,而在B +树中,内部节点不包含值。
B +树对于由文件系统支持的数据库索引很受欢迎。由于内部节点不包含值,因此它们可以具有更高的扇出效果,从而降低树的高度并使访问速度更快。
叶子节点通常不会实际存储值 - 它们存储指向存储值的位置的指针,这样可以方便地为B +树的叶节点提供与内部节点完全相同的结构。