Java數(shù)據(jù)結(jié)構(gòu)與算法:多路查找樹
作者:subeiLY https://blog.csdn.net/m0_46153949/article/details/106742330
本章思維導(dǎo)圖

二叉樹與B樹
二叉樹的問題分析 二叉樹的操作效率較高,但是也存在問題, 請看下面的二叉樹:


B樹的基本介紹 B樹通過重新組織節(jié)點(diǎn),降低樹的高度,并且減少讀寫次數(shù)來提升效率。

2-3樹
2-3樹基本介紹:
2-3樹是最簡單的B樹結(jié)構(gòu), 具有如下特點(diǎn):
2-3樹的所有葉子節(jié)點(diǎn)都在同一層.(只要是B樹都滿足這個條件)
有兩個子節(jié)點(diǎn)的節(jié)點(diǎn)叫二節(jié)點(diǎn),二節(jié)點(diǎn)要么沒有子節(jié)點(diǎn),要么有兩個子節(jié)點(diǎn).
有三個子節(jié)點(diǎn)的節(jié)點(diǎn)叫三節(jié)點(diǎn),三節(jié)點(diǎn)要么沒有子節(jié)點(diǎn),要么有三個子節(jié)點(diǎn).
2-3樹是由二節(jié)點(diǎn)和三節(jié)點(diǎn)構(gòu)成的樹。
2-3樹應(yīng)用案例 將數(shù)列{16, 24, 12, 32, 14, 26, 34, 10, 8, 28, 38, 20} 構(gòu)建成2-3樹,并保證數(shù)據(jù)插入的大小順序。 (演示構(gòu)建2-3樹的過程 ——> 如下:)













其它說明 除了23樹,還有234樹等,概念和23樹類似,也是一種B樹。如圖:

B樹、B+樹和B*樹
B樹的介紹 B-tree樹即B樹,B即Balanced,平衡的意思。有人把B-tree翻譯成B-樹,容易讓人產(chǎn)生誤解。會以為B-樹是一種樹,而B樹又是另一種樹。實(shí)際上,B-tree就是指的B樹。
前面已經(jīng)介紹了2-3樹和2-3-4樹,他們就是B樹(英語:B-tree 也寫成B-樹),這里我們再做一個說明,我們在學(xué)習(xí)Mysql時,經(jīng)常聽到說某種類型的索引是基于B樹或者B+樹的,如圖:

B+樹的介紹 B+樹是B樹的變體,也是一種多路搜索樹。

B*樹是B+樹的變體,在B+樹的非根和非葉子結(jié)點(diǎn)再增加指向兄弟的指針。

B*樹定義了非葉子結(jié)點(diǎn)關(guān)鍵字個數(shù)至少為(2/3)*M,即塊的最低使用率為2/3,而B+樹的塊的最低使用率為B+樹的1/2。
從第1個特點(diǎn)我們可以看出,B*樹分配新結(jié)點(diǎn)的概率比B+樹要低,空間使用率更高
更多精彩: 記一次由Redis分布式鎖造成的重大事故,避免以后踩坑! 6 個 Spring Boot 項(xiàng)目夠經(jīng)典,建議收藏! 數(shù)據(jù)量很大,分頁查詢很慢,推薦個優(yōu)化方案! 京東把 Elasticsearch 用得真牛逼!日均5億訂單查詢完美解決! 推薦一款免費(fèi)開源的通用數(shù)據(jù)庫工具 這么設(shè)計(jì),Redis 10億數(shù)據(jù)量只需要100MB內(nèi)存 關(guān)注公眾號,查看更多優(yōu)質(zhì)文章 最近面試BAT,整理一份面試資料《Java面試BAT通關(guān)手冊》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。 獲取方式:點(diǎn)“在看”,關(guān)注公眾號并回復(fù)?666?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。 明天見(??ω??)??
評論
圖片
表情
