在了解B树之前,我们先了解内存和磁盘的区别 cpu可以通过汇编代码访问内存的任意位置,访问速度较快 ,而磁盘需要磁头顶住磁盘找到磁道 ,寻址的过程很慢,如果有4GB的磁盘,访问的小单位为4k,用普通的二叉树结点代表磁道,那么我们最晚找到我们我要的位置需要寻址20次。访问速度较慢,试想,如果存在一种具有某种性质的多叉树树具有的多个叶子节点可以减少磁盘的寻址次数。经过前人的总结出现了如下性质的多叉树
附上多叉树的定义
#define M 6
#define DEGREE (M / 2)
typedef int KEY_VALUE;
//定义叶子节点 该节点可以代表磁盘里面的扇区
struct btree_node
{
KEY_VALUE* keys; // malloc 这样定义减少结构体所占用的内存
//KEY_VALUE keys[M-1]; M-1 节点最多关键字的数量
struct btree_node** childrens;//定义子叶子节点的指针
int num;//叶子节点关键字的数量
int leaf;//判断该节点是都是叶子节点
};
struct btree {
struct btree_node* root;
};