B树、B+树、B*树

B树

二叉搜索树->AVL树->红黑树->B树,由于B树之前的搜索树都是内存中存数据,如果数据量过大,内存中存不下,就没有办法了。这个时候内存中存不下的时候,就想到向磁盘中存储,B树主要就是应对在磁盘上存储数据的问题
B树的主要特点:

1.搜索树的左边的子树小于当前结点key,右边的子树大于当前的结点key
2.一个结点会有多个关键字,多个孩子,但是孩子的数量总会比关键字的数量多一个
3.根节点关键字的数量[1,M-1],孩子的数量[2,M]
4.非根结点的关键字的数量[M/2-1,M-1],孩子的数量[M/2,M]

B树删除的思路:删除一个值,就去向父亲或兄弟中借值,如果兄弟也小于M/2,就直接合并

B+树

B+树是B树的优化
1.一个结点孩子的数量和关键字的数量相等
2.所有的值存储在叶子上,非叶子只需要存储关键字,作为查找索引即可
3.叶子节点增加一个指针链接起来,方便遍历

B+树在插入的时候与B树的不同:
当插入数据后需要分裂的时候,把中间那个拷贝到父亲索引,B树挪动过去,B+树拷贝过去,就是为了让所有的节点都在叶子节点

B+树一般用来做数据库的存储引擎:

主键搜索可以使用B+树结构,但是非主键搜索需要遍历所有数据,也就是全表扫描,B+树更加方便做全表扫描,所以用来做数据库的引擎

B*树

B*树就是在B+树上继续优化

1.非叶子结点的数量[2/3*M,M]
2.非叶子结点也是链接起来的

非叶子结点的数量最小是2/3M的原因:之前的B树和B+树都是满了就分裂两个,所以最小都是1/2M,但是B*树是自己如果满了,就去看兄弟满不满,兄弟不满就给兄弟,如果兄弟也满了,则新增一个结点,将我和兄弟各自拷贝1/3,这个时候我、兄弟、新节点就都是2/3M的数量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值