数据结构—— 四中常见的多路查找树【2-3 树$2-3-4 树$B 树$B+ 树】的区别用法

 目录:

一:2-3 树

1.定义 

2.图形化解释

二: 2-3-4 树

定义 

三:B 树(B-tree)

定义 

四: B+ 树

定义 

五: B 树 减少这种内外存交互

1.传统的硬盘处理

2. B 树处理

3.思路方法


一:2-3 树

1.定义 

每个结点都具有两个孩子(我们称它为 2 结点)或三个孩子(我们称它为 3 结点)的树

 

一个 2 结点 包含一个元素和两个孩子(或没有孩子)

左子树数据元素小于该元素

右子树数据元素大于该元素

 

一个 3 结点 包含一小一大两个元素和三个孩子(或没有孩子)

如果有 3 个孩子的话

左子树包含小于较小元素的元素

右子树包含大于较大元素的元素

中间子树包含介于两元素之间的元素

2.图形化解释

下图即为一个 2-3 树 图:

 

二: 2-3-4 树

定义 

其为 2-3 树 的扩展

在其基础上增加一个 4 结点 的使用

 

一个 4 结点 包含小中大三个元素和四个孩子(或没有孩子)

 

如果某个 4 结点有孩子的话

左子树包含小于最小元素的元素

第二子树包含大于最小元素小于第二元素的元素

第三子树包含大于第二元素小于最大元素的元素

右子树包含大于最大元素的元素

 

三:B 树(B-tree)

定义 

其是一种平衡的多路查找树

2-3 树2-3-4 树 都是 B 树特例

 

结点最大的孩子数目称为 B 树 的阶(order)

 

因此

2-3 树 3 阶 B 树

2-3-4 树 4 阶 B 树

 

四: B+ 树

定义 

其是应文件系统所需而出的一种 B 树变形树

 

在 B 树 中

每一个元素在该树中只出现一次

有可能在叶子结点

也有可能在分支结点

 

而在 B+ 树 中

出现在分支结点中的元素会被当作它们在该分支结点位置的中序后继者(叶子结点)中再次列出

另外,每一个叶子结点都会保存一个指向后一叶子结点的指针

 

五: B 树 减少这种内外存交互

1.传统的硬盘处理

对于海量数据,数据一般都保存到外存(eg:硬盘)中

每次需要数据时,读取到内存中

因此,如果内存与外存交换数据次数频繁,就会造成时间效率上的瓶颈

2. B 树处理

而使用 B 树 可以减少这种内外存交互:

我们的外存,比如硬盘,是将所有的信息分割成相等大小的页面,每次硬盘读写的都是一个或多个完整的页面

对于一个硬盘来说,一页的长度可能是 211 到 214 个字节

3.思路方法

在一个典型的 B 树 应用中,要处理的硬盘数据量很大,因此无法一次全部装入内存

因此我们会对 B 树 进行调整

使得 B 树 的阶数(或结点的元素)与硬盘存储的页面大小相匹配

 

比如说一棵 B 树 的阶为 1001(即 1 个结点包含 1000 个关键字),高度为 2,它可以储存超过 10 亿个关键字

我们只要让根结点持久地保留在内存中

那么在这棵树上,寻找某一个关键字至多需要两次硬盘的读取即可

通过这种方式

在有限内存的情况下,每一次磁盘的访问我们都可以获得最大数量的数据

可以说,B 树的数据结构就是为内外存的数据交互准备的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘鑫磊up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值