面試問題之數據結構與算法:B樹、B+樹、B*樹


一、B樹

  B樹是一種多叉平衡查找樹,由於是多叉結構,對於元素數量非常多的情況下,樹的深度不會像二叉結構那么大,可以保證查詢效率。

二、B+樹

  B+是是B樹的一種變形,

  1、特點:

  (1)、所有葉子結點包含全部關鍵字信息,及指向含有這些關鍵字記錄的指針,且葉子節點中關鍵字進行有序鏈接。

  (2)、非葉子結點相當於是葉子節點的索引(稀疏索引),葉子結點相當於是存儲(關鍵字)數據的數據層。

  2、B+樹比B樹更適合操作系統的文件索引和數據庫索引:

  (1)B+樹的磁盤讀寫代價更低,B+樹的內部結點沒有指向關鍵字具體信息的指針,因此內部結點相對B樹更小。如果把所有同一內部結點的關鍵字放在同一塊磁盤中,盤塊所能容納的關鍵字數量也就越多,一次性讀入內存中的需要查找的關鍵字也就越多,相對IO讀寫次數降低。

  (2)B+樹的查詢效率更加穩定,由於非葉子結點並不是最終指向文件內容的結點,而只是葉子結點中關鍵字的索引。所以任何關鍵字的查找必須走一條從根結點到葉子結點的路。所有關鍵字查詢的路徑長度相同,導致每個數據的查詢效率相當。

  此外B+樹只要遍歷葉子結點就可以實現整棵樹的遍歷,支持基於范圍的查詢。

三、B*樹

  B*是是B+樹的變體,在B+樹的非根和非葉子結點在增加指向兄弟的指針;

  1、特點:

  當一個結點滿時,如果它的下一個兄弟結點未滿,那么將一部分數據移到兄弟結點中,將結點的最低利用率從1/2提高到2/3。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM