數據結構--B樹(B- ,B+, B*)

1B-樹

1.1概念

平衡的多路查找樹 ,我們把樹中結點最大的孩子數目稱爲B樹的階 通常記爲m
在這裏插入圖片描述

1.2特性

一個m階的B-樹滿足以下特性:

  • 書中每顆結點至多有m棵子樹,至多有m-1個關鍵字
  • 若根節點不是終端結點,至少有2棵子樹
  • 除根節點外的所有非葉子結點至少有[M/2](維護平衡的性質)棵子樹(判斷樹根是否要分裂的關鍵)
  • 非葉子結點至少有[m/2]-1個關鍵字
  • 所有的葉子結點都出現在同一層次,就是最下面的空結點不存儲信息爲NULL,

1.3查找

  • 類似於2叉排序樹

1.4插入

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

1.5刪除

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

2B+樹

在這裏插入圖片描述

2.1概念

  • 常用於數據庫和操作系統的文件系統中的一份用於查找的數據結構

2.2特性

  • 具有n個關鍵字的結點只含有n棵子樹,即每個關鍵字對應一顆子樹;
  • 每個結點(非根內部結點)關鍵字個數n的範圍是[M/2]<=n<=m,根節點1<=n<=m
  • 葉子結點包含信息,所有非葉子結點只能起到索引的作用,非葉子結點中的每個索引項只含有對應子樹的最大關鍵字和指向該子樹的指針不含有該關鍵字對應記錄的存儲地址
  • 葉子結點包含了全部的關鍵字,即在非葉子結點中出現的關鍵字也會出現在葉子結點中
  • 有一個指針指向關鍵字最小的葉子結點,把所有的葉子結點連成一個單鏈表

2.3B-樹與B+樹差異

在這裏插入圖片描述

3B*樹

  • 是B+樹的變體,在B+樹的非根和非葉子結點再增加指向兄弟的指針
    在這裏插入圖片描述

  • B+樹的分裂:當一個結點滿時,分配一個新的結點,並將原結點中1/2的數據複製到新結點,最後在父結點中增加新結點的指針;B+樹的分裂隻影響原結點和父結點,而不會影響兄弟結點,所以它不需要指向兄弟的指針;

  • B*樹的分裂:當一個結點滿時,如果它的下一個兄弟結點未滿,那麼將一部分數據移到兄弟結點中,再在原結點插入關鍵字,最後修改父結點中兄弟結點的關鍵字(因爲兄弟結點的關鍵字範圍改變了);如果兄弟也滿了,則在原結點與兄弟結點之間增加新結點,並各複製1/3的數據到新結點,最後在父結點增加新結點的指針;

  • B*樹:在B+樹基礎上,爲非葉子結點也增加鏈表指針,將結點的最低利用率從1/2提高到2/3;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章