關於B樹和B 樹的一些話題

2021-09-07 05:11:57 字數 604 閱讀 3072

關於b樹的介紹,可以參考這篇文章

1,那麼b+樹和b樹的區別是什麼呢?

b+數是從b樹改進來的,它和b樹的主要區別在於,b+樹中儲存元素的節點都位於葉子節點,非葉子節點只起到索引的作用。而且,b+樹不同子樹直接有指標連線起來了。

2,資料庫的索引一般採用b+樹來實現,可以達到的時間複雜度為log(n)。更進一步討論這個問題,如果我們用hash表來儲存索引,那麼時間複雜度可以達到o(1)。既然用雜湊表儲存索引比b+樹效率更高,那為什麼不用雜湊表來實現資料庫的索引呢?這主要是考慮資料量的問題。資料庫的索引是儲存在磁碟上的,如果資料量太大,那麼就沒有辦法一次都載入記憶體。

3,關於b樹,b樹是乙個多路排序樹,為什麼要設計成多路的呢?是為了進一步降低樹的高度,提高查詢效率。在極端情況下,把多路定位無限多,那麼b樹會變成乙個有序陣列。

4,為什麼b+樹的葉子節點要用指標連線起來?

這個是和業務場景有關的。b+樹常用來儲存資料庫索引,資料庫select資料,不一定只選一條,很多時候會選多條。如果選多條的話,b樹需要進行區域性的中序遍歷,才能獲取到所有符合條件的元素,而且很可能要跨層訪問。而b+樹因為所有元素都在葉子節點上,且不同子樹的葉子節點已經用指標連線起來了,當需要選擇多條資料時,b+樹就會有很大的優勢。

B樹與B 樹的一些區別

為了便於說明,我們先定義一條資料記錄為乙個二元組 key,data key為記錄的鍵值,key唯一 data為資料記錄除key外的資料。b樹每個節點都儲存key和data,所有節點組成這棵樹,並且葉子節點指標為null。b 樹只有葉子節點儲存data,葉子節點包含了這棵樹的所有鍵值,葉子節點不儲存指...

B樹B 樹B 樹和B 樹

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

B 樹 B 樹 B 樹和B 樹

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