多路查找树(B树,B+树)

目录

多路树理解

B树(B-Tree树)

B+树

B+树应用场景

B和B+的区别


多路树理解

多路查找树(muitl-way search tree),其每一个节点的孩子数可以多于两个,且每一个节点处可以存储多个元素。(注意:二叉树是两个叉 ,多路树一个节点不止两个叉,不清楚的查看我【重温数据结构和算法】那篇博客)

B树(B-Tree树)

是对二叉查找树的改进。它的设计思想是,将相关数据尽量集中在一起,以便一次读取多个

数据,减少硬盘操作次数。

一棵m阶的B 树 (m叉树)的特性如下:

1.B树中所有节点的孩子节点数中的最大值称为B树的阶,记为M
2.树中的每个节点至多有M棵子树 ---即:如果定了M,则这个B树中任何节点的子节点数量都不能超过M
3.若根节点不是终端节点,则至少有两棵子树
4.除根节点和叶节点外,所有点至少有m/2棵子树
5.所有的叶子结点都位于同一层

B+树

B+树是B-树的变体,也是一种多路搜索树,其定义基本与B树相同,它的自身特征是:
1.非叶子结点的子树指针与关键字个数相同
2.非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树

3.为所有叶子结点增加一个链指针

4.所有关键字都在叶子结点出现

B+树应用场景

MySQL存储引擎基于InnoDB和MyISAM创建的表结构的索引底层数据结构是B+Tree,也是最常见的,当然有其它不常见的采用的哈希当做索引底层数据结构。
B树是为了磁盘或其它存储设备而设计的一种多叉(相对于二叉,B树每个内结点有多个分支,即多叉)平衡查找树。 

B树的高度一般都是在2-4这个高度,树的高度直接影响IO读写的次数。
如果是三层树结构---支撑的数据可以达到20G,如果是四层树结构---支撑的数据可以达到几十T

B和B+的区别(这就是为什么选B+树,不选B树)

B+树非叶子节点不存储数据,这样便于存储更多的索引值。
B树是非叶子节点和叶子节点都会存储数据,指针和数据冗余在一块了,数据量大时候查询效率也没B+树高。
B+树只有叶子节点才会存储数据,而且存储的数据都是在一行上,而且这些数据都是有指针指向的,也就是有顺序的,用指针连接,提高区间的访问性能。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值