b树和b+树

441 阅读2分钟

Btree性质

一个m阶的B树具有如下属性:

  • 如果根结点不是叶结点,则其至少有两棵子树。
  • 每一个非根的分支结点都有k-1个元素和k个孩子,其中[m/2]≤ k ≤ m。每一个叶子结点 n 都有k-1个元素,其中[m/2]≤ k ≤ m。
  • 所有叶子结点都位于同一层次。
  • 所有分支结点包含下列信息数据( n, A0, K1, A1, K2, A2, …, Kn, An ),其中: Ki( i=1, 2, …, n ) 为关键字,且Ki<Ki+1( i=1, 2, …, n-1 ); Ai ( i=0, 2, …, n) 为指向子树根结点的指针,且指针Ai-1所指子树中所有结点的关键字均小于Ki( i=1, 2, …, n ) ,An 所指子树中所有结点的关键字均大于Kn,n ( [m/2]-1 ≤ n ≤ m-1 ) 为关键字的个数(或 n+1 为子树的个数)。

B+tree性质

①:n棵子tree的节点包含n个关键字,不用来保存数据而是保存数据的索引。
②:所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
③: 所有的非终端结点可以看成是索引部分,结点中仅含其子树中的大(或小)关键字。
④:B+树中,数据对象的插入和删除仅在叶节点上进行。
⑤:B+树有2个头指针,一个是树的根节点,一个是小关键码的叶节点。

B+树和B树的区别

①:在B+树中,具有n个关键字的结点只含有n棵子树,即每个关键字对应一颗子树;而在B树中,具有n个关键字的结点含有(n+1)棵子树。
②:在B+树中,每个结点(非根内部结点)关键字个数n的范围是[m/2]<=n<=m(根结点1<=n<=m),在B树中,每个结点(非根内部结点)关键字个数n的范围是[m/2]-1<=n<=m-1(根结点:1<=n<=m-1)。
③: 在B+树中,叶结点包含信息,所有非叶结点仅起到索引的作用,非叶结点中的每个索引项只含有对应子树的最大关键字和指向该子树的指针,不含有该关键字对应的存储地址。
④:在B+树中,叶结点包含了全部关键字,即在非叶结点中出现的关键字也会出现在叶结点中;而在B树中,叶结点包含的关键字和其他结点包含的关键字是不重复的。
⑤:在B+树中,有一个指针指向关键字最小的叶子结点,所有叶子结点连接成一个单链表。

操作网址

www.cs.usfca.edu/~galles/vis…