B樹和二叉排序樹,B樹和B 樹的區別

2021-05-31 03:22:22 字數 2854 閱讀 8045

1樓:

先從資料結構的角度來答。

題主應該知道b-樹和b+樹最重要的一個區別就是b+樹只有葉節點存放資料,其餘節點用來索引,而b-樹是每個索引節點都會有data域。

這就決定了b+樹更適合用來儲存外部資料,也就是所謂的磁碟資料。

從mysql(inoodb)的角度來看,b+樹是用來充當索引的,一般來說索引非常大,尤其是關係性資料庫這種資料量大的索引能達到億級別,所以為了減少記憶體的佔用,索引也會被儲存在磁碟上。

那麼mysql如何衡量查詢效率呢?磁碟io次數,b-樹(b類樹)的特定就是每層節點數目非常多,層數很少,目的就是為了就少磁碟io次數,當查詢資料的時候,最好的情況就是很快找到目標索引,然後讀取資料,使用b+樹就能很好的完成這個目的,但是b-樹的每個節點都有data域(指標),這無疑增大了節點大小,說白了增加了磁碟io次數(磁碟io一次讀出的資料量大小是固定的,單個資料變大,每次讀出的就少,io次數增多,一次io多耗時啊!),而b+樹除了葉子節點其它節點並不儲存資料,節點小,磁碟io次數就少。

這是優點之一。

另一個優點是什麼,b+樹所有的data域在葉子節點,一般來說都會進行一個優化,就是將所有的葉子節點用指標串起來。這樣遍歷葉子節點就能獲得全部資料,這樣就能進行區間訪問啦。

至於mongodb為什麼使用b-樹而不是b+樹,可以從它的設計角度來考慮,它並不是傳統的關係性資料庫,而是以json格式作為儲存的nosql,目的就是高效能,高可用,易擴充套件。首先它擺脫了關係模型,上面所述的優點2需求就沒那麼強烈了,其次mysql由於使用b+樹,資料都在葉節點上,每次查詢都需要訪問到葉節點,而mongodb使用b-樹,所有節點都有data域,只要找到指定索引就可以進行訪問,無疑單次查詢平均快於mysql(但側面來看mysql至少平均查詢耗時差不多)。

總體來說,mysql選用b+樹和mongodb選用b-樹還是以自己的需求來選擇的。

資料結構中b樹、b+樹的區別

2樓:匿名使用者

這兩種處理索引的資料結構的不同之處:

1。b樹中同一鍵值不會出現多次,並且它有可能出現在葉結點,也有可能出現在非葉結點中。而b+樹的鍵一定會出現在葉結點中,並且有可能在非葉結點中也有可能重複出現,以維持b+樹的平衡。

2。因為b樹鍵位置不定,且在整個樹結構中只出現一次,雖然可以節省儲存空間,但使得在插入、刪除操作複雜度明顯增加。b+樹相比來說是一種較好的折中。

3。b樹的查詢效率與鍵在樹中的位置有關,最大時間複雜度與b+樹相同(在葉結點的時候),最小時間複雜度為1(在根結點的時候)。而b+樹的時候複雜度對某建成的樹是固定的。

b樹和二叉樹有什麼區別? 10

3樓:以下均為真話

b樹是多叉樹,二叉樹是二叉樹。

具體看網頁連結

b tree 和 b+ tree 的區別

4樓:匿名使用者

.b樹中同一鍵值不會出現多次,並且它有可能出現在葉結點,也有可能出現在非葉結點中。而b+樹的鍵一定會出現在葉結點中,並且有可能在非葉結點中也有可能重複出現,以維持b+樹的平衡。

2.因為b樹鍵位置不定,且在整個樹結構中只出現一次,

5樓:

兩款**很方便,。、交易貓

b樹和b加樹的區別,再理解oracle的b-tree index

6樓:風流小子愛美人

1.b樹中同一鍵值不抄會襲出現多次,並且它有可能出現在葉結點,也有可能出現在非葉結點中。而b+樹的鍵一定會出現在葉結點中,並且有可能在非葉結點中也有可能重複出現,以維持b+樹的平衡。

2.因為b樹鍵位置不定,且在整個樹結構中只出現一次,雖然可以節省儲存空間,但使得在插入、刪除操作複雜度明顯增加。b+樹相比來說是一種較好的折中。

3.b樹的查詢效率與鍵在樹中的位置有關,最大時間複雜度與b+樹相同(在葉結點的時候),最小時間複雜度為1(在根結點的時候)。而b+樹的時候複雜度對某建成的樹是固定的。

oracle 中的b樹是 b+樹還是 b-樹啊還是 b樹。看了一些資料,我感覺是b+樹,但又沒有找到權威的佐證。

7樓:匿名使用者

b-樹是m叉查詢樹,而你上面提到的b樹的b代表binary,和b-樹(依然讀作b shu,不是b減樹)不是同一個東西。b樹是二叉查詢樹。

oracle裡面的應該是b-樹吧。。。我也不確定

b樹就是b-樹嗎? 20

8樓:匿名使用者

b樹就是b-樹,等價的,一般都說是b樹,b+樹是b樹的一種變形,b+樹和b樹他們之間有區別。

9樓:不舌不甘

通常表示b-樹b*-樹b+-樹中的「-」是英文中的連詞符號,沒有實在的意義。所以b樹就是b-樹

10樓:匿名使用者

b樹就是b-樹,這個是由於國內對英文書籍翻譯所產生的問題,b+樹是b樹的變形。絕對準確,我以前也糾結過這個問題

11樓:匿名使用者

b-樹是一種平衡的

多路查詢樹。

b+樹是應檔案系統所需而出的一種b-樹的變形樹。

一顆專m階的b+樹和m階b-樹的區別屬是:

1.有n棵子樹的節點中可能含有n個關鍵字

2.所有的葉子節點中包含了全部關鍵字的資訊,及指向含這些關鍵字記錄的指標,且葉子節點本身以關鍵字的大小自小而大順序連結.

3.所有的非終端節點可以看成是索引部分,節點中僅含有其子樹(根節點)中的最大(或最小)關鍵字.

b樹包括b+和b-兩種,b+是b-的一種變形,主要應用於檔案系統,b-是一種平衡的多路查詢樹。

因此,b樹是兩者的統稱。

二叉判定樹和二叉排序樹有什麼區別

一 用法不同 二叉判定樹是用於描述解決問題的思路,比如可以使用判定樹描述n個數的比較過程,正如你所提到的,它也可以用於描述折半查詢的過程,從這個判定樹分析演算法的效率,二叉排序樹是用於排序的,它是一種排序方法。二 性質 二叉排序樹又稱為二叉查詢樹,是一種特殊的二叉樹。他或者是一種空樹,或者時具有下面...

急!C語言二叉排序樹的實現課程設計

include include typedef struct tnodebstnode,node typedef bstnode node 插入 void insertbst node t,int key else if key t data insertbst t lchild,key else ...

平衡二叉樹定義,討論請問平衡二叉樹和二叉排序樹的關係

所謂平衡二叉樹是指樹中任一結點的左 右子樹高度大致相同。平衡二叉樹有很多種最著名的是由前蘇聯數學家adelse velskil和landis在1962年提出的,稱為avl樹。平衡二叉樹 avl樹 定義如下 平衡二叉樹或者是一棵空樹,或者是具有以下性質的二叉排序樹 1 它的左子樹和右子樹的高度之差絕對...