B树和B+树之间的区别
嘻嘻发布于2020-08-24
最后更新于2020年8月15日
浏览B+树是B树的扩展。B+树和B树的区别在于,在B树中,键和记录可以存储为内部节点和叶节点,而在B+树中,记录存储为叶节点,键只存储在内部节点中。
B树
B树被称为自平衡树,因为其节点按顺序遍历排序。在B树中,一个节点可以有两个以上的子节点。B树的高度为logM N(其中“ M”是树的顺序,N是节点数)。并在每次更新时自动调整高度。在B树中,数据按特定顺序排序,最低值在左侧,最高值在右侧。在B树中插入数据或键要比二叉树复杂。
B树必须满足一些条件:
- B树的所有叶节点必须处于同一级别。
- 在B树的叶子节点上方,不应有空的子树。
- B树的高度应尽可能低。
B+树
B +树通过仅在树的叶节点上存储数据指针,消除了用于索引的B树的缺点。因此,B +树的叶节点的结构与B树的内部节点的结构完全不同。在这里应该指出,由于数据指针仅存在于叶节点上,因此叶节点必须必须将所有键值及其对应的数据指针存储到磁盘文件块,以便访问它们。此外,叶节点链接到提供对记录的有序访问。因此,叶节点形成索引的第一层,内部节点形成多级索引的其他层。叶子节点的某些关键值也出现在内部节点中,以简单地充当控制记录搜索的媒介。
B树和B+树之间的区别
序号 | B树 | B +树 |
---|---|---|
1 | 所有内部和叶节点都有数据指针 | 只有叶节点具有数据指针 |
2 | 由于叶子上所有键都不可用,因此搜索通常需要更多时间。 | 所有键都在叶节点上,因此搜索更快,更准确。 |
3 | 树中没有key的重复项。 | key重复,并且所有节点都位于叶子上。 |
4 | 插入会花费更多时间,有时无法预测。 | 插入更容易,结果始终相同。 |
5 | 内部节点的删除非常复杂,并且树必须进行大量转换。 | 删除任何节点都很容易,因为所有节点都在叶子上找到。 |
6 | 叶节点不存储为结构链表。 | 叶节点存储为结构链表。 |
7 | 没有多余的搜索键。 | 可能存在冗余搜索键。 |