#定義就不重複說明了
b樹與b+樹的不同是,b+樹中非葉子節點的節點也會出現在葉子節點中
b樹要求至少t-1,至多2t-1
b樹一、插入
1、關於高度的定理
h ⩽l
ogtn
+1
2h\leqslant log_t \frac
h⩽logt
2n+
12、**操作:
抽象出來就是插入到某個節點,滿了之後從中間**(之間除以2就行,不用考慮奇偶性),然後將中間的節點提上去
這個時候相當於上乙個節點插入了節點
具體實現,我想的是**的那個節點前一半指標和data不變,生成的新節點複製後一半的內容,然後後一半重置
所選擇的邏輯:先**再插入,**是優先中間靠右
3、遞迴過程之前的文章**現過(略)
二、刪除
核心想法,再進行刪除時,若刪除後節點的個數太少以至於不符合條件,我們就要進行再次調整
1、如果關鍵字k在x節點中,並且時葉子節點,則可以直接刪除該關鍵字
2、如果k不在節點x中,則我們先確定必包含k的子樹的根x.ci,則必須通過操作保證降至乙個至少包含t個關鍵字的節點
如果到了某個節點只有t-1個關鍵字,剛好不滿足:
操作:啊其實也還好,看siblings,如果sbling有至少t個的,則把這個換到父節點,把父節點的元素換乙個下來(注意大小關係,建議畫圖聯想)
如果說都是剛好t個,我們的操作時合併兩個節點(最小的乙個加上旁邊的剛好合適的),並且提乙個上去
3、若k在節點x中,並且x是內部節點:
(1)、若節點中先於k的(x是父節點)子節點y至少t個,那麼找出k在以y為根的子樹中的前驅k『,遞迴刪除k』
(2)、若z至少t個關鍵字,則對稱地,找出後繼k『,遞迴刪除
(3)、若y、z都只有t-1個,則合併yz兩者,這個時候不需要k了,k消失
《演算法導論》筆記 B樹
演算法 cc c 資料結構 b樹是平衡樹的一種,主要用於操作儲存在磁碟等二級儲存裝置上的大量資料。相比起記憶體 主存 來說,磁碟操作的速度非常慢 慢幾個數量級 所以涉及到儲存在磁碟的資料的時候,儘量減少磁碟的讀取和寫入操作對於提高操作速度是非常重要的。b樹就是針對這個特點進行設計以滿足相應要求的。b...
演算法導論 B樹
include include define t 3 typedef struct bnodetype bnode,pbnode typedef struct btree,pbtree typedef struct stype,pstype pbnode allocatenode void b tr...
演算法導論 B樹
這是為磁碟儲存而專門設計的一類平衡搜尋樹。由於磁碟訪問相對訪存極慢,因此度量b樹的效能,考慮 a.動態集合操作消耗的計算時間 b.執行了多少次的磁碟訪問。對每個b樹操作,磁碟訪問的次數隨著b樹的高度增加。b tree定義 第1.每個節點x有 a.x.n儲存節點x的關鍵字個數。b.x.n個關鍵字不嚴格...