B樹與B+樹個人筆記

B樹與B+樹

前言

先引入一個動態查找樹:二叉查找樹、平衡二叉查找樹、紅黑樹、B樹、B+樹、B*樹。
這六者都是爲實現高效率的磁盤存取而設計的。
前三者是典型的二叉查找樹結構,時間複雜度爲n(log2N),與樹的深度(高度)相關,那麼降低樹的深度自然就可以提高查找效率。
後三者是要講的重點。
樹的深度過大會造成磁盤I/O操作過於頻繁,進而導致查詢效率低下。
那麼如何減少樹的深度?如果在樹節點存儲更多的元素,但樹節點存儲的元素數量是有限的(如果元素數量非常多的話,查找就退化成節點內部的線性查找了),那麼一個基本的想法就是採用多叉樹結構。

B樹

B樹,多路平衡查找樹,在平衡二叉樹的基礎上衍生出來的,與紅黑樹相似,但在降低磁盤I/O操作方面要更好一些。

特性
一棵M階的樹
1、 樹中每個結點最多含有M個孩子(M >= 2)
2、 除根結點和葉子結點外,其它每個結點至少有ceil( M/2 )個孩子(ceil(x)向上取整)
3、 若根結點不是葉子結點,則至少有2個孩子。(特殊情況爲沒有孩子的根結點,整棵樹只有一個根節點)
4、 所有葉子結點都出現在同一層,葉子結點不包含任務關鍵字信息
5、 每個非終端結點中包含n個關鍵字信息(k0 , p0 , k1 , p1 , k2 , p2 , ….. , kn , pn),其中:
1、 Ki爲關鍵字信息,且關鍵字按順序升序排序K(i-1)

B+樹

B+是在B樹的基礎上的一種變形樹。主要特點同B樹一樣,主要差異在:
1、 關鍵字信息全部保存在葉子結點,非葉子結點只保存關鍵字的索引信息。
2、 樹的所有葉子結點構成一個有序鏈表,可以按照關鍵字排序的次序遍歷全部信息。
3、 一個M階的B+有M個關鍵字(B樹是M-1),M個孩子。(ki<=ci

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