1.B树定义
解析:B树是一种平衡的多路查找树,一棵m阶的B树,或为空树,或为满足下列特性的m叉树,如下所示:
[1]树中每个结点至多有m棵子树;
[2]若根结点不是叶子结点,则至少有两颗子树;
[3]除根之外的所有非终端结点;
[4]所有的非终端结点中包含信息数据;
[5]所有的叶子结点都出现在同一层次上,并且不带信息[可以看作是外部结点或查找失败的结点,实际上这些结点不存在,指向这些结点的指针为空]。
说明:结点最大的孩子数目称为B树的阶。2-3树和2-3-4树都是B树的特例。2-3树是3阶B树,2-3-4树是4阶B树。
2.B树插入
解析:
[1]一棵2-3树
[2]插入30之后
[3]插入26之后
[4]插入85之后
[5]插入7之后
3.B树查找
解析:在B树上进行查找的过程是一个顺指针查找结点和在结点的关键字中进行查找交叉进行的过程。
4.B树删除
解析:若在B-树上删除一个关键字,则首先应找到该关键字所在结点,并从中删除之,若该结点为最下层的非终端结点,且其中的关键字数目不少于ceil(m/2),则删除完成,否则要进行“合并”结点的操作。
5.B+树定义
解析:B+树是B树的变形树。一棵m阶的B+树和m阶的B树的差异,如下所示:
[1]有n棵子树的结点中含有n个关键字;
[2]所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的顺序链接。
[3]所有的非终端结点可以看成是索引部分,结点中仅含有其子树根结点中最大[或最小]关键字。
说明:通常在B+树上有两个头指针,一个指向根节点,另一个指向关键字最小的叶子节点。因此可以对B+树进行两种查找运算:一种是从最小关键字起顺序查找,另一种是从根节点开始,进行随机查找。在B+树上进行随机查找、插入和删除的过程基本上与B树类似。只是在查找时,若非终端结点上的关键字等于给定值,并不终止,而是继续向下直到叶子结点。因此,在B+树中,不管查找成功与否,每次查找都是走了一条从根到叶子结点的路径。
参考文献:
[1] 数据结构[C语言版]