【数据结构】树(四):B树(C++实现)

本文介绍了B树的概念,强调了其在磁盘存储优化中的作用。B树是一种平衡搜索树,适用于辅助存储设备。文章详细讲解了B树的定义,包括度和阶,并描述了B树的基本操作,如插入、删除关键字的处理。插入操作涉及节点的分裂,删除操作则可能涉及节点合并。B树的搜索操作类似二叉搜索树。此外,文章还提到了在C++中实现B树的思考,以及使用`explicit`关键字避免隐式类型转换的重要性。
摘要由CSDN通过智能技术生成
> 《算法导论》学习

基本介绍

B树是为磁盘或者其他直接存取的辅助存储(secondary storage)设备而设计的平衡搜索树。B树类似于红黑树,但是在降低磁盘I/O操作数方面表现更好。许多数据库系统使用B树或其变种来存储信息。

磁盘驱动器

一个典型的磁盘驱动器如图所示,从存储结构中读取某段信息的步骤如下:
①查看主存(primary memory/main memory),假如对象在主存中,则可以向平常一样引用该对象;
②否则该对象存储在磁盘上,需要先从磁盘读入主存;
③将对该对象的修改保存到磁盘中。
为了加快数据的读写,我们需要每次的读写操作都能读取到尽可能多的信息,减少读取操作。一个B树节点通常和一个完整磁盘页一样大,并且磁盘页的大小限制了一个B树节点可以含有的孩子个数。一个大的分支因子可以大大地降低树的高度以及查找任何一个关键字所需的磁盘存储次数。

B树定义

首先需要区分对于一棵B树度与阶:
最小度数(minmum degree)是一个固定整数表示B树中一个节点所包含孩子节点个数的下界。
阶(order)表示B树中一个节点所包含孩子节点个数上界。

一棵B树T是具有以下性质的有根树:
1. 每个节点具有属性:(1) x.n,当前存储在节点x中的关键字个数;(2)x.n个关键字本身的 x.key1,x.key2,x.key3,...,x.keyx.n ,以非降序存放,即 x.key1x.key2x.key3...x.keyx.n ;(3)x.leaf,一个布尔值,标识是否为叶子节点。
2. 每个内部节点x还包含x.n+1个指向其孩子的指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值