B-树

数据结构 -文泉学堂 课程链接

B-树

B-树提出的初衷

随着存储技术的不断提高,虽然内存的绝对容量也在不断地增长,但相比于数据库容量的增长,内存的相对容量实际上是在缩小的。如我们执意的增加内存容量,则会导致其访问速度的降低,因此我们需要牺牲部分的内存容量。
由于访问外存与访问内存速度的差异,我们宁可访问内存多次也不愿访问一次外存,引入多级存储系统后,我们更希望访问的数据位于更高层的存储设备。B树即是借鉴了多级存储思路。

B-树结构

多级存储系统使用B-树,可针对外部查找,大大减少I/O次数。
B-树充分利用外存对批量访问的高效支持,将此特点转化为优点,每下降一层,都以超级节点为单位,读入一组关键码。

定义:

  • 所谓m阶B-树,即为m路的平衡搜索树。
  • 外部节点的深度统一相等,所有的叶节点深度统一相等。外部节点即是叶节点的数值为空,实际不存在的节点,B-树的高度也是相对于外部节点而言的。
  • 内部节点有不超过m-1个关键码,不超过m个分支
  • 内部节点的分支数n+1>m/2,亦称作(m/2, m)-树
紧凑表示法

BTNode定义

将超级节点的内部实现为两个vector,一个存储关键码,一个存储指向孩子节点的引用。

template<typename T> struct BTNode
{
   
    BTNodePosi(T) parent;  //父节点
    Vector<T> key;  //数值向量
    Vector<BTNodePosi(T)> child;  //孩子向量(长度比key多1)
    BTNode()
    {
   
        parent=NULL;
        child.insert(0,NULL);
    }
    BTNode(T e, BTNodePosi(T) lc=NULL, BTNodePosi(T) rc=NULL)
    {
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值