关于b+树:数据结构-B树B树B-树
一、B-树1. B-树是一种多路搜寻树(并不一定是二叉的) 1970年,R.Bayer和E.mccreight提出了一种实用于外查找的树,它是一种均衡的多叉树,称为B树(或B-树、B_树)。 2. 一棵m阶B树(balanced tree of order m)是一棵均衡的m路搜寻树。它或者是空树,或者是满足下列性质的树: 根结点至多有两个子女;每个非根节点所蕴含的关键字个数 j 满足:┌m/2┐ - 1 <= j <= m - 1;除根结点以外的所有结点(不包含叶子结点)的度数正好是关键字总数加1,故外部子树个数 k 满足:┌m/2┐ <= k <= m ;所有的叶子结点都位于同一层。二、特点:是一种多路搜寻树(并不是二叉的): 定义任意非叶子结点最多只有M个儿子;且M>2;根结点的儿子数为[2, M];除根结点以外的非叶子结点的儿子数为[M/2, M];每个结点寄存至多M/2-1(取上整)和至少M-1个关键字;(至多2个关键字)非叶子结点的关键字个数=指向儿子的指针个数-1;非叶子结点的关键字:K[1], K[2], …, K[M-1];且K[i] < K[i+1];非叶子结点的指针:P[1], P[2], …, P[M];其中P[1]指向关键字小于K[1]的子树,P[M]指向关键字大于K[M-1]的子树,其它P[i]指向关键字属于(K[i-1], K[i])的子树;所有叶子结点位于同一层;如:(M=3) B-树的搜寻,从根结点开始,对结点内的关键字(有序)序列进行二分查找,如果 命中则完结,否则进入查问关键字所属范畴的儿子结点;反复,直到所对应的儿子指针为 空,或曾经是叶子结点; 三、B-树的个性:关键字汇合散布在整颗树中;任何一个关键字呈现且只呈现在一个结点中;搜寻有可能在非叶子结点完结;其搜寻性能等价于在关键字选集内做一次二分查找;主动档次管制;四、B+树B+ 树是一种树数据结构,是一个n叉树,每个节点通常有多个孩子,一棵B+树蕴含根节点、外部节点和叶子节点。根节点可能是一个叶子节点,也可能是一个蕴含两个或两个以上孩子节点的节点。 五、用处:B+ 树通常用于数据库和操作系统的文件系统中。NTFS, ReiserFS, NSS, XFS, JFS, ReFS 和BFS等文件系统都在应用B+树作为元数据索引。B+ 树的特点是可能保持数据稳固有序,其插入与批改领有较稳固的对数工夫复杂度。B+ 树元素自底向上插入。 六、B+树的定义1. B+树是应文件系统所需而出的一种B-树的变型树。一棵m阶的B+树和m阶的B-树的差别在于: 有n棵子树的结点中含有n个关键字,每个关键字不保留数据,只用来索引,所有数据都保留在叶子节点。所有的叶子结点中蕴含了全副关键字的信息,及指向含这些关键字记录的指针,且叶子结点自身依关键字的大小自小而大程序链接。所有的非终端结点能够看成是索引局部,结点中仅含其子树(根结点)中的最大(或最小)关键字。通常在B+树上有两个头指针,一个指向根结点,一个指向关键字最小的叶子结点。2. B+树是B-树的变体,也是一种多路搜寻树: 其定义根本与B-树同,除了:非叶子结点的子树指针与关键字个数雷同;非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树(B-树是开区间);为所有叶子结点减少一个链指针;所有关键字都在叶子结点呈现;如:(M=3) B+的搜寻与B-树也基本相同,区别是B+树只有达到叶子结点才命中(B-树能够在 非叶子结点命中),其性能也等价于在关键字选集做一次二分查找; 七、B+的个性:所有关键字都呈现在叶子结点的链表中(浓密索引),且链表中的关键字恰好是有序的;不可能在非叶子结点命中;非叶子结点相当于是叶子结点的索引(稠密索引),叶子结点相当于是存储(关键字)数据的数据层;更适宜文件索引零碎;八、B*树:1. 是B+树的变体,在B+树的非根和非叶子结点再减少指向兄弟的指针; ...