一种多路平衡查找树。
能保证数据插入和删除情况下,任然保持执行效率。
一个M阶的B树满足:
- 每个节点最多M个子节点
- 除跟节点和叶节点外,其它每个节点至少有M/2个孩子
- 根节点至少2个节点
- 所有叶节点在同一层,叶节点不包含任何关键字信息
- 有k个关键字的页节点包含k+1个孩子
也就是说:根节点到每个叶节点的路径长度都是相同的。
typedef struct Item{
int key;
Data data;
}
#define m 3 //B树的阶
typedef struct BTNode{
int degree; //B树的度
int keynums; //每个节点key的个数
Item items[m];
struct BTNode *p[m];
}BTNode,* BTree;
typedef struct{
BTNode *pt; //指向找到的节点
int i; // 节点中关键字的序号 (0,m-1)
int tag; //1:查找成功,0:查找失败
}Result;
Status btree_insert(root,target)//插入B树节点
Result btree_find(root,target)//查找B树节点
Status btree_delete(root,target)//删除B树节点