磁盘存储链式的B树与B+树(上课笔记)

多叉树与B树区别:

1. 多叉树没有约束平衡

2. 多叉树没有约束每个节点的子树个数

内存与磁盘区别:

1. 内存块,磁盘慢

2. 断电以后内存数据消失,磁盘持久存储

磁盘的慢是慢在寻址。磁盘使用红黑树来进行寻址。

为了减少寻址次数,就有了多叉树 b树。

1个1024叉的B树,最小单位是4K,要寻址4G的内存,只需要2次寻址找到对应的单元。

B-树的性质:

一颗M阶B树T,满足以下条件:

1. 每个节点至多有M棵子树

2. 根节点至少拥有两棵子树

3. 除了根节点以外,其余每个分支结点至少拥有M/2棵子树

4. 所有的叶节点都在同一层上(那么一定平衡)

5. 有k棵子树的分支结点则存在k-1个关键字,关键字按照递增顺序进行排序(类比排序,5个人排序,可以有6个人插到队列里)

6. 关键字数量满足ceil(M/2)-1<=n<=M-1

#define M 6
#define DEGREE 3 //M/2

typedef int KEY_VALUE;

struct btree_node{
    KEY_VALUE *keys;    //malloc
    struct btree_node **childrens;
    int num;    //当前节点个数
    int leaf;    //是否是叶子结点
};

struct btree{
    struct btree_node *root;
};

再添加key的时候,先分裂再添加。分裂有两种情况&#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值