(面試)B Tree和B Tree的性質和區別

2021-10-01 10:34:53 字數 904 閱讀 5034

b tree指的是 balance tree,也就是平衡樹。平衡樹是一顆查詢樹,並且所有葉子節點位於同一層。 b+ tree 是基於 b tree 和葉子節點順序訪問指標進行實現,它具有 b tree 的平衡性,並且通過順序訪問指標來提高 區間查詢的效能。

b tree的性質

一棵m階的b tree有如下特性:

1.每個節點最多有m個孩子

2.除了根節點和葉子節點外,其餘節點至少有ceil(m/2)個孩子。

3.若根節點不是葉子節點則至少有兩個孩子。

4.所有葉子節點都在同一層,且不包含其他關鍵字。

5.每個非葉子節點都包含n個關鍵字資訊(p0,p1,…pn, k1,…kn)

5.1. 關鍵字的個數n滿足:ceil(m/2)-1 <= n <= m-1

5.2. ki(i=1,…n)為關鍵字,且關鍵字公升序排序。

5.3. pi(i=1,…n)為指向子樹根節點的指標。p(i-1)指向的子樹的所有節點關鍵字均小於ki,但都大於k(i-1)

b+tree相對於b-tree有幾點不同:

1.b+tree上有兩個頭指標,乙個指向根節點,另乙個指向關鍵字最小的葉子節點,而且所有葉子節點(即資料節點)之間是一種鏈式環結構(鏈指標)關鍵字的大小自小而大順序鏈結。對於範圍查詢來說,b+樹只需遍歷葉子節點鍊錶即可,b樹卻需要重複地中序遍歷。 優勢。

2.資料記錄都存放在葉子節點中,非葉子節點只儲存鍵值資訊,也就是b+樹中,內部節點僅僅起到索引的作用。優勢(能存更多的鍵值,因為沒有資料)。

3.內部節點中,關鍵字的個數與其子樹的個數相同,不像 b樹中,子樹的個數總比關鍵字個數多1個

4。b+樹查詢必須查詢到葉子節點,b樹只要匹配到即可不用管元素位置,因此b+樹查詢更穩定。優勢。

BTree和B Tree 簡單區別

本篇作用於各種樹之間的區別,非演算法詳細介紹,只是給我們這種非科班出身的一種大概的印象,現在網上更多是講各種樹的怎麼實現的細節問題,本篇不涉及那麼高深,如果詳細了解可以查閱他人的資料,很多大神已經說的很多了 二叉樹效果 這個是我們想象中的本應該的樹的資料結構。可是他存在一種極端的情況 他的查詢效率就...

B tree和B tree 知識梳理

再看mysql中索引的原理,發現使用b tree實現的。所以對b數知識點做一下梳理 網上已經有很多寫的不錯的 b tree 和 b tree講解,這裡不再重複造輪子,傳送門 btree 知識點 出現背景 個人理解 二叉查詢樹,雖然相對於其他查詢方式有了一定的效能提公升,但是在樹的深度很大的時候,就需...

BTree和B Tree 簡單區別

本篇作用於各種樹之間的區別,非演算法詳細介紹,只是給我們這種非科班出身的一種大概的印象,現在網上更多是講各種樹的怎麼實現的細節問題,本篇不涉及那麼高深,如果詳細了解可以查閱他人的資料,很多大神已經說的很多了 二叉樹效果 這個是我們想象中的本應該的樹的資料結構。可是他存在一種極端的情況 他的查詢效率就...