查找之——B树、B+树的概念及性质+答题技巧(必背几句,考试不慌,稳得一匹)【多图!多动图!多耗费流量警告!!!预计消耗20M+流量】

2019/11/21

B树,又称多路平衡查找树,B树中所有结点的孩子结点数的最大值称为B树的阶。

  一颗m阶B树或是空树,或是满足如下特性的m叉树:


 

  1)树中每个结点至多有m棵子树、m-1个关键字。

  2)若根节点不是终端节点(非叶子节点),则至少有两棵子树、1个关键字(由  1)得到:2阶-1=1个关键字)。

  3)除根节点外的所有非叶结点(除去第一行和最后一行元素),

  至少有${\left \lceil m/2 \right \rceil}$棵子树、${\left \lceil m/2 \right \rceil}$-1个关键字。

  

  给出阶数m关键字n,高度h的B树→树的最大高度最小高度,背住以下公式,很快求出:

  $\log _{m}(n+1)\leqslant h\leqslant \log_{\left \lceil m/2 \right \rceil}(\frac{n+1}{2})+1$

  推导过程:

  $n\leq (m-1)(1+m+m^{2}+...+m^{h-1})$

  得到树的最小高度。

  

 

  下面是最大高度

  

 

 

  第h+1那层,叶结点的那层有$2(\left \lceil m/2 \right \rceil)^{h-1}$个结点。

  因为在B树中,它的关键字个数为n的话,则它的叶结点,也就是查找失败结点,数量为n+1。

  对应的失败结点就是对应着不存在该B树上的值的那一个区间,

  那么对应有n个关键字,就会有n+1个区间,所以它的失败结点数量为n+1。

  $2(\left \lceil m/2 \right \rceil)^{h-1} \leqslant n+1$ 就可以计算出它的最大取值了。

得到如下结果:

  $\log _{m}(n+1)\leqslant h\leqslant \log_{\left \lceil m/2 \right \rceil}(\frac{n+1}{2})+1$

 

 

  树的几个通用性质也务必牢记:

  ①树中的结点数 = 所有结点的度数 + 1

  ②度为m的树中,第 i 层上至多有mi - 1个结点(i ≥1)

  ③高度为h的m叉树至多有(mk-1)/(m-1)个结点。

  ④具有n个结点的m叉树的最小高度为$\left \lceil \log _{m} (n(m-1)+1)\right \rceil$

  

注:背住以上三条性质+最后在B/B+树中,求树高的公式+树的通用性质,则答题无惑矣😊🎉🎉🎉,尤其注意红色加粗部分,至少和至多的运用。


 

非叶结点的结构:

n P0 K1 P1 K2 P2 ...Kn Pn  

 

 

Ki(i=1,2,...n)为结点的关键字,K1<K2<K3<.....<Kn

Pi(i=1,2,...n) 为子树根节点的指针,

Pi-1所指子树的关键字均小于Ki

Pi 所指子树关键字均大于K 

所有叶结点都出现在同一层次上,并不带任何信息

 

几种操作:

一、查找

  ①在B树中找结点       磁盘

  ②在结点中找关键字  内存

二、插入

   ①定位

  

  ②插入

 

  

 

  

  

  

三、删除

   


 

  终端上的3种删除情况:

   

   

  

  B树删除从左兄弟结点借一个

  

  B树删除从右兄弟结点借一个

  

  

   


 

  ②非终端上的3种删除情况:

  

   

  

 

  非终端上的删除操作转化为终端上的删除操作

  

   

 

    


 

B+树

B+树

 


---截图来源于《王道数据结构CSKAOYAN.COM

 坚持就是胜利,坚持定会成功!

 

posted @ 2019-11-21 20:58  厸清扬  阅读(926)  评论(0编辑  收藏  举报