B/B+树

B树的定义

B树又称多路平衡查找树,B树中所有结点孩子个数的最大值称为B树的阶,通常用M表示。
在这里插入图片描述

代码定义

// 这是一个B树数据结构的定义。它包含了一个结构体_btree_node,该结构体表示B树的节点,并具有以下属性:

// keys:保存节点中的关键字的数组。这里定义为int类型的指针,表示一个动态数组。
// childrens:保存子节点的数组。这里定义为指向_btree_node结构体的指针的指针,表示一个动态数组。
// num:节点中已存储的关键字数量。
// leaf:一个标志位,指示该节点是否为叶子节点。
// 另外,还定义了一个结构体_btree表示整个B树,包含一个指向根节点的指针。


#define SUB_M   3


typedef struct _btree_node
{
    int *keys;   // 5
    struct _btree_node **childrens;   // 6

    int num;
    int leaf;

}btree_node;


struct _btree
{

    struct _btree_node *root;

};

性质

  1. B树内部结点也存储数据;而B+树只有叶子结点存储数据,内结点只是索引作用。
  2. B+树的内结点只有索引作用,故索引磁盘时,可以将索引全部存入内存,故B+树寻址更快。(只需要一次访存就可以找到需要数据的地址)

B树的插入和删除

B树的删除:对于内结点,想办法使内结点变成叶子结点再进行删除即可。先合并或者借位,再进行删除。

待续

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值