1.B树和B+树的区别
B(B-)树
B树是一种自平衡树数据结构,它维护有序数据并允许以对数时间进行搜索,顺序访问,插入和删除。
- 一种二叉搜索树。
- 除根节点外的所有非叶节点至少含有(M/2(向上取整)-1)个关键字,每个节点最多有M-1个关键字,并且以升序排列。所以M阶B树的除根节点外的所有非叶节点的关键字取值区间[M/2-1(向上取整),M-1]。
优点:当你要查找的值恰好处在一个非叶子节点时,查找到该节点就会成功并结束查询。
B+树
- 有n棵子树的非叶子结点中含有n个关键字(b树是n-1个),这些关键字不保存数据,只用来索引,所有数据都保存在叶子节点(b树是每个关键字都保存数据)。
- 所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接(叶子节点组成一个链表)。
- 所有的非叶子结点可以看成是索引部分,结点中仅含其子树中的最大(或最小)关键字。
- 通常在b+树上有两个头指针,一个指向根结点,一个指向关键字最小的叶子结点。
- 同一个数字会在不同节点中重复出现,根节点的最大元素就是b+树的最大元素。
优点:
- 所有的叶子结点使用链表相连,便于区间查找和遍历。B树则需要进行每一层的递归遍历。相邻的元素可能在内存中不相邻,所以缓存命中性没有B+树好。
- b+树的中间节点不保存数据,能容纳更多节点元素。
- 查询效率稳定
缺点:
- 主键不是有序递增的,导致每次插入数据产生大量的数据迁移和空间碎片
- 即使主键是有序递

本文深入解析了B树和B+树这两种自平衡数据结构的区别,包括存储方式、查找机制、优点和缺点,以及它们在实际应用中的优势。B树每个节点包含数据,而B+树仅叶节点保存数据,B+树的叶子节点链接方便区间查询。了解两者的关键在于区分数据存储位置和查询路径特性。
最低0.47元/天 解锁文章
3593

被折叠的 条评论
为什么被折叠?



