1. m路查找树
与二叉排序树类似,可以定义一种“m叉排序树”,通常称为m路查找树。
一棵m路查找树,或者是一棵空树,或者是满足如下性质的树:
① 结点最多有m棵子树,m-1个关键字,其结点结构如下图所示:

其中,n为关键字的个数,Pi(0<=i<=n)为指向子树根结点的指针,Ki(1<=i<=n)为关键字。
② Ki<Ki+1,1<=i<=n-1
③ 子树Pi中的所有关键字均大于Ki且小于Ki+1,1<=i<=n-1
④ 子树P0中的关键字均小于K1,而子树Pn中的所有关键字均大于Kn
⑤ 子树Pi也是m路查找树,0<=i<=n

2. B树
一棵B树是一棵平衡的m路查找树,它或者是空树,或者是满足如下性质的树:
① 树中每个结点最多有m棵子树。
② 根结点至少有两棵子树。
③ 除根结点之外的所有非叶结点至少有⌈m/2⌉棵子树。
④ 所有的叶结点出现在同一层上,并且不含信息,通常称为失败结点。失败结点为虚结点,在B树中并不存在,指向它们的指针为空指针。引入失败结点是为了便于分析B树的查找性能。
B树结点结构:

typedef int KeyType;
/*B树结点存储结构*/
typedef struct Mbtnode {
struct Mbtnode* parent; //指向双亲结点的指针
int keynum; //结点关键字个数
KeyType key[m + 1];
本文介绍了B树的概念和性质,包括B树的查找、插入和删除操作。通过具体的例子详细阐述了B树的各个操作步骤,并给出了部分C语言实现的思路。文章最后讨论了在非最下层和最下层结点中删除关键字的不同处理方式。
最低0.47元/天 解锁文章
968

被折叠的 条评论
为什么被折叠?



