目錄
b樹特徵:
b+ 樹特徵:
b樹與b+樹的區別:
b+樹相比於b樹的查詢優勢:
乙個m階的b樹具有如下幾個特徵:b樹中所有結點的孩子結點最大值稱為b樹的階,通常用m表示。乙個結點有k個孩子時,必有k-1個關鍵字才能將子樹中所有關鍵字劃分為k個子集。
1.根結點至少有兩個子女。
2.每個中間節點都包含k-1個元素和k個孩子,其中 ceil(m/2) ≤ k ≤ m
3.每乙個葉子節點都包含k-1個元素,其中 ceil(m/2) ≤ k ≤ m
4.所有的葉子結點都位於同一層。
5.每個節點中的元素從小到大排列,節點當中k-1個元素正好是k個孩子包含的元素的值域劃分
6.每個結點的結構為:(n,a0,k1,a1,k2,a2,… ,kn,an)
其中,ki(1≤i≤n)為關鍵字,且kib+樹是b樹的變種,有著比b樹更高的查詢效率。
乙個m階的b+樹具有如下幾個特徵:
1.有k個子樹的中間節點包含有k個元素(b樹中是k-1個元素),每個元素不儲存資料,只用來索引,所有資料
都儲存在葉子節點。
2.所有的葉子結點中包含了全部元素的資訊,及指向含這些元素記錄的指標,且葉子結點本身依關鍵字的大小
自小而大順序鏈結。
3.所有的中間節點元素都同時存在於子節點,在子節點元素中是最大(或最小)元素。
舉例:先定義一條資料記錄為乙個二元組[key,data],key為記錄的鍵值,key唯一;data為資料記錄除key外的資料。
b樹: 每個節點都儲存key和data,所有節點組成這棵樹,並且葉子節點指標為null。
b+樹: 只有葉子節點儲存data,葉子節點包含了這棵樹的所有鍵值,葉子節點不儲存指標。
後來,在b+樹上增加了順序訪問指標,也就是每個葉子節點增加乙個指向相鄰葉子節點的指標,這樣一棵樹成了資料庫系統實現索引的首選資料結構。
原因有很多,最主要的是這棵樹矮胖,呵呵。一般來說,索引很大,往往以索引檔案的形式儲存的磁碟上,索引查詢時產生磁碟i/o消耗,相對於記憶體訪問,i/o訪問的消耗要高幾個數量級,所以評價乙個資料結構作為索引的優劣最重要的指標就是在查詢過程中磁碟i/o操作次數的時間複雜度。樹高度越小,i/o次數越少。
那為什麼是b+樹而不是b樹呢,因為它內節點不儲存data,這樣乙個節點就可以儲存更多的key。
b+樹的中間節點不儲存資料,所以磁碟頁能容納更多節點元素,更「矮胖」;
b+樹查詢必須查詢到葉子節點,b樹只要匹配到即可不用管元素位置,因此b+樹查詢更穩定(並不慢);
對於範圍查詢來說,b+樹只需遍歷葉子節點鍊錶即可,b樹卻需要重複地中序遍歷
B樹與B 樹區別
b樹是一種平衡多路查詢樹,它的每乙個節點最多包含k個孩子,k被稱作為b樹的階,k的大小取決於磁碟頁的大小。一棵m階b樹 balanced tree of order m 是一棵平衡的m路搜尋樹。它或者是空樹,或者是滿足下列性質的樹 根結點至少有兩個子女 每個中間節點都包含k 1個元素和k個孩子,其中...
B樹 B 樹 B 樹 B 樹的區別
b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點關鍵字小,就進...
B樹 B 樹 B 樹 B 樹的區別
即二叉查詢樹 二叉排序樹或二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比...