(1)b-樹的查詢方法
在b-樹中查詢給定關鍵字的方法類似於二叉排序樹上的查詢。不同的是在每個結點上確定向下查詢的路徑不一定是二路而是keynum+1路的。
對結點內的存放有序關鍵字序列的向量key[l..keynum] 用順序查詢或折半查詢方法查詢。若在某結點內找到待查的關鍵字k,則返回該結點的位址及k在key[1..keynum]中的位置;否則,確定k在某個key[i]和key[i+1]之間結點後,從磁碟中讀son[i]所指的結點繼續查詢……。直到在某結點中查詢成功;或直至找到葉結點且葉結點中的查詢仍不成功時,查詢過程失敗。
(2)b-樹的查詢演算法
btreenode *searchbtree(btree t,keytype k,int *pos)
//結點內查詢失敗,但t->key[i]key[i+1],下乙個查詢的結點應為
//son[i]
if(!t->son[i]) //*t為葉子,在葉子中仍未找到k,則整個查詢過程失敗
return null;
//查詢插入關鍵字的位置,則應令*pos=i,並返回t,見後面的插入操作
diskread(t->son[i]); //在磁碟上讀人下一查詢的樹結點到記憶體中
return searchbtree(t->son[i],k,pos); //遞迴地繼續查詢於樹t->son[i]
}(3)查詢操作的時間開銷
b-樹上的查詢有兩個基本步驟:
①在b-樹中查詢結點,該查詢涉及讀盤diskread操作,屬外查詢;
②在結點內查詢,該查詢屬內查詢。
查詢操作的時間為:
①外查詢的讀盤次數不超過樹高h,故其時間是o(h);
②內查詢中,每個結點內的關鍵字數目keynum注意:
①實際上外查詢時間可能遠遠大於內查詢時間。
②b-樹作為資料庫檔案時,開啟檔案之後就必須將根結點讀人記憶體,而直至檔案關閉之前,此根一直駐留在記憶體中,故查詢時可以不計讀入根結點的時間。
紅黑樹(1) B 樹
本文將帶你了解紅黑樹插入和刪除節點的處理過程,在這之前你應該對紅黑樹或bst有一些了解 r b tree,全稱是red black tree,又稱為 紅黑樹 它一種特殊的二叉查詢樹。紅黑樹的每個節點上都有儲存位表示節點的顏色,可以是紅 red 或黑 black 1 根節點是黑色。2 每個外部節點 n...
牛客練習賽 1 B 樹
有一顆樹,有k種不同顏色的染料給樹染色。乙個染色方案是合法的,當且僅當對於所有相同顏色的點對 x,y x,y x,y x xx 到 y yy 的路徑上的所有點的顏色都要與 x xx 和 y yy 相同,請統計方案數 易得乙個節點要麼塗和父節點乙個顏色,要麼塗沒有出現過的顏色 假設我們遍歷到了第 x ...
資料庫原理剖析 序列1 B 樹
關係型資料庫在查詢方面有一些重要特性,是kv型的資料庫或者快取所不具備的,比如 1 範圍查詢。2 字首匹配模糊查詢。3 排序和分頁。這些特性的支援,要歸功於b 樹這種資料結構。下面來分析b 樹是如何支援這些查詢特性的。圖6 1展示了資料庫的主鍵對應的b 樹的邏輯結構,這個結構有幾個關鍵特徵 1 在葉...