B树的定义
flyfish 2015-7-15
B-树即为B树。由于B树的原英文名称为B-tree,由于翻译的不统一所以B树和B-树都是B-tree。
B树定义 引用自严蔚敏《数据结构》(C语言版)
B树是一种平衡的多路查找树
定义:一棵m 阶的B树,或者为空树。或为满足下列特性的m 叉树:
1 树中每一个结点至多有m 棵子树;
2 若根结点不是叶子结点。则至少有两棵子树;
3 除根结点之外的全部非终端结点至少有
4 全部的非终端结点中包括下面信息数据:
(n。
当中:
n(
5 全部的叶子结点都出如今同一层次上。而且不带信息(能够看作是外部结点或查找失败的结点,实际上这些结点不存在,指向这些结点的指针为空)。
结点最大的孩子数目称为B树的阶(order)。
B树定义 引用自 Donald Knuth的《The Art of Computer programming》
A B-tree of order m is a tree that satisfies the following properties:
1 Every node has at most m children.
2 Every node, except for the root and the leaves, has at least m/2 children,
3 The root has at least 2 children (unless it is a leaf),
4 All leaves appear on the same level, and carry no information.
5 A nonleaf node with k children contains k - 1 keys.
翻译
1 树中每一个结点至多有m个孩子。
2 除根结点和叶子结点外。其他每一个结点至少有m/2个孩子;
3 若根结点不是叶子结点,则至少有2个孩子;
4 全部叶子结点都出如今同一层,叶子结点不包括不论什么keyword信息;
5 有k个孩子的非终端结点包括k-1个keyword。
向下取整floor,用数学符号
向上取整ceil。用数学符号
floor(7.5) = 7
floor(-7.5) = -8
ceil(7.5) = 8
ceil(-7.5) = -7
B树示意图
绿色:keyword个数
红色:指针
蓝色:keyword
keyword从1到9的B树
问题:
对于n个keyword的m阶B树。最坏情况须要查找几次?
相同的问题不同的问法
含n个keyword的m阶B树的最大深度是多少?
深度为h+1的m阶B树所具有的最少结点数是
第一层至少1个节点
第二层至少2个节点
除根节点外每一个分支节点至少有m/2棵子树
所以层数与每层至少结点数的关系例如以下
1 = 1
2 = 2
3 = 2
4 = 2
5 = 2
6 = 2
7 = 2
…
h = 2
h+1 = 2
h+1层的节点就是叶子节点。若m阶B树有n个keyword。则叶子节点即查找不成功的节点为n+1
推导
n+1
2
(
h-1
h
所以 含n个keyword的m阶B树的最大深度是
读作 以
Degree为3,关键码从1到9的B树示意图
绿色:keyword个数
红色:指针
蓝色:keyword