Files
Learn-Algorithms/4 Tree/7-B树/B树.md
T
2021-10-16 01:52:41 +08:00

80 lines
1.1 KiB
Markdown

# B树
一种多路平衡查找树。
能保证数据插入和删除情况下,任然保持执行效率。
一个M阶的B树满足:
1. 每个节点最多M个子节点
2. 除跟节点和叶节点外,其它每个节点至少有M/2个孩子
3. 根节点至少2个节点
4. 所有叶节点在同一层,叶节点不包含任何关键字信息
5. 有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树节点
```
## 插入B树节点
## 查找B树节点
## 删除B树节点