前提
下圖B樹,我們要遍歷它,假設每個節點都屬於硬盤的不同頁面,我們為了中序遍歷所有的元素,
頁面2-頁面1-頁面3-頁面1-頁面4-頁面1-頁面5.
而且我們每經過節點遍歷時,都會對節點中的元素進行一次遍歷,糟糕!有沒有可能讓遍歷時每個元素只訪問一次呢?
B+樹
B+樹是應文件系統所需而出的一種B樹的變形樹,在B樹中,每一個元素樹中只出現一次,而B+樹中,出現在分支節點中的元素會被當做他們在該分支節點位置的中序后繼者(葉子節點)中再次列出。另外,每一個葉子節點都會保存一個指向后一葉子節點的指針。
下圖就是B+樹,灰色關鍵字,在根節點出現,在葉子節點中再次列出。
與B樹比較
B+樹適合隨機查找,只不過查到后是索引,不能提供實際記錄的訪問,還需要到達包含此關鍵字的終端節點。
非葉結點僅具有索引作用,跟記錄有關的信息均存放在葉結點中。B+樹適合帶有范圍的查找。B+樹插入、刪除類似B樹。