数据结构–B树以及B+树
1 B树B+树的区别
B 树
1什么是B树
B 树是为了磁盘或其它存储设备而设计的一种多叉(下面你会看到,相对于二叉,B树每个内结点有多个分支,即多叉)平衡查找树。B树与红黑树最大的不同在于,B树的结点可以有许多子女,从几个到几千个。B树可以在O(logn)
时间内,实现各种如插入(insert),删除(delete)等动态集合操作。
如下图所示,即是一棵B树,一棵关键字为英语中辅音字母的B树,现在要从树种查找字母R(包含n[x]
个关键字的内结点x, x有n[x]+1]个子女(也就是说,一个内结点x若含有n[x]个关键字,那么x将含有n[x]+1个子女)。所有的叶结点都处于相同的深度,带阴影的结点为查找字母R时要检查的结点):
B 树又叫平衡多路查找树。一棵m阶的B 树的特性如下:
1、 树中每个结点最多含有m个孩子(m>=2);
2、 除根结点和叶子结点外,其它每个结点至少有[ceil(m / 2)]个孩子(其中ceil(x)是一个取上限的函数);
3、 若根结点不是叶子结点,则至少有2个孩子(特殊情况:没有孩子的根结点,即根结点为叶子结点,整棵树只有一个根节点);
4、 所有叶子结点都出现在同一层,叶子结点不包含任何关键字信息
5、 每个非终端结点中包含有n个关键字信息: (n,P0,K1,P1,K2,P2,…,Kn,Pn)。其中:
a) Ki (i=1...n)
为关键字,且关键字按顺序升序排序K(i-1)< Ki。
b) Pi
为指向子树根的接点,且指针P(i-1)
指向子树种所有结点的关键字均小于Ki,但都大于K(i-1)
。
c) 关键字的个数n必须满足: [ceil(m / 2)-1]<= n <= m-1。
如下图所示:
2 B树的类型和节点定义
B树的类型和节点定义如下图所示: