面試總結 B樹,B 樹的原理及區別

2021-09-02 20:30:12 字數 2089 閱讀 5728

之前在網上看到過一些b樹與b+樹的區別然後主要是針對定義來陳述,分分鐘看的我快要冬眠,然後在一次面試遇到該沒問題沒回答上來一首涼涼送 給自己,今天老老實實的分享自己對b樹,b+樹淺顯理解,若望指出不足。

動態查詢樹主要包括:二叉搜尋樹,平衡二叉樹,紅黑樹,b樹,b-樹時間複雜度o(log2n),通過對樹高度的降低可以提公升查詢效率

尤其是在大量資料進行儲存的時候會儲存到外部 磁碟,通過對外部磁碟的讀取時需要快速的查詢到對應的位置,所以需要一種高效的外村資料結構。

b樹:就是為了儲存裝置或者磁碟設計的一種平衡查詢樹

對於一顆m階的b樹

1)樹中的每個節點最多有m個孩子

2)除了根節點和葉子節點外,其他節點最少含有m/2(取上限)個孩子

3)若根節點不是葉子節點,則根節點最少含有兩個孩子

4)所以葉子節點都在同一層,葉子節點不包含任何關鍵字資訊

b樹的型別與節點定義

struct btnode

b樹的插入1)若b樹中已存在需要插入的鍵值時,用新的鍵值替換舊值;

2)若b樹中不存在這個值,則在葉子節點進行插入操作;

具體插入過程如下

對於高度為h的m階b樹,新節點一般插在第h層。	

1)若該節點中關鍵碼個數小於m-1,則直接插入

2)若該節點中關鍵碼個數等於m-1,則節點**。以中間的關鍵碼為界,

將節點一分為二,產生乙個新的節點,並將中間關鍵碼插入到父節點中。

重複上述過程,最壞情況一直**高根節點,則b樹就會增加一層。

一般b樹用來新增以便查詢,這裡沒有對刪除做出理解,有興趣可參考鏈結

參考如下(含有插入,刪除的**過程)

b+樹特點

1)b+樹是b樹的一種變形,它把資料都儲存在葉子節點,內部只存關鍵字(其中葉子節點的最小值作為索引)和孩子指標,簡化了內部節點。

2)b+樹的遍歷高效,將所以葉子節點串聯成煉表即可從頭到尾遍歷,

b+樹的定義

1)有n棵子樹的結點含有n個關鍵字,每個關鍵字都不儲存資料,

只用來索引,並且所有的資料都儲存在葉子節點

2)所有葉子結點包含所有關鍵字資訊和指向關鍵字記錄的指標,

其中關鍵字從小到大順序鏈結

b+樹插入:1)若為空樹直接插入

2)對於葉子結點:根據key找到葉子結點,對葉子結點進行插入操作。插入後如果當前葉子結點的key值數b不大於m-1,則插入結束。

反之,將這個葉子結點分成左右兩個葉子結點進行操作,

左葉子結點包含前m/2個記錄,右葉子結點包含剩下的記錄key,

將第m/2+1個記錄的key進製到父結點中,(父結點必須是索引型別的結點)

進製到父結點的key,進製的key左孩子指向左結點,右孩子指向右結點。

3)對於索引結點:如果當前結點的key個數小於等於m-1,插入結束。

反之,將這個索引型別的結點分成兩個索引結點,

左索引結點包含前(m-1)/2個資料,右結點包含m-(m-1)/2個資料

將第m/2個key進製到父結點中,進製的key左孩子指向左結點,右孩子指向右結點

插入**參考原文

剖析2:為什麼b+樹比b樹更適合做系統的資料庫索引和檔案索引

1)b+樹的磁碟讀寫代價更低

因為b+樹內部結點沒有指向關鍵字具體資訊的指標,內部結點相對b樹小

2)b+樹的查詢更加穩定

因為非終端結點並不是指向檔案內容的結點,僅僅是作為葉子結點的關鍵字索引,因此所有的關鍵字查詢都會走一條從根節點到葉子結點的路徑。即s所有關鍵字查詢的長度是一樣的,查詢效率穩定。

今日份分享告一段落。

b樹的**實現參考原文

B 樹 B 樹原理及區別

b樹又稱為b 樹 b 樹,b 樹是b 樹的變體。b 樹相對於b 樹最大的特點是 查詢效能更高 原因 也是b 樹和b 樹結構上的區別 b 樹的元素分布在中間節點和葉子節點上。b 樹的所有元素都在同一層葉子節點上,且每乙個葉子節點都有指向下乙個節點的指標,形成有序鍊錶。1.1.在查詢單行的時候,b 樹效...

B樹 B 樹 B 樹 B 樹的區別

b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點關鍵字小,就進...

B樹 B 樹 B 樹 B 樹的區別

即二叉查詢樹 二叉排序樹或二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比...