關(guān)于這個話題是一個老生常談的問題了,但是有時候好多人總是傻傻搞不明白
首先我們來總結(jié)一下b樹和B+樹的主要區(qū)別,關(guān)于這兩個的基本定義,其實(shí)我也說不太明白,畢竟好長時間沒有實(shí)際做過這些了,但是一些主要的區(qū)別我們還是必須要清楚的。
首先B樹和B+樹,都有節(jié)點(diǎn)和指針,也就是書上定義的Ki和Pi,原諒寫的不夠標(biāo)準(zhǔn),不怎么熟悉Markdown的語法;下面我們就主要來說說兩者的主要區(qū)別:
首先來看看B樹和B+樹的圖片,圖片來自網(wǎng)絡(luò):
B-樹.jpeg
B-樹的主要特征是Pi比Ki要多一個,另外非葉子結(jié)點(diǎn)的指針: P[1], P[2], …, P[M];其中 P[1]指向關(guān)鍵字小于 K[1]的子樹, P[M]指向關(guān)鍵字大于 K[M-1]的子樹,其它 P[i]指向關(guān)鍵字屬于 (K[i-1], K[i])的子樹,注意為開區(qū)間。
B+樹.jpeg
而B+樹的主要特征是k的個數(shù)等于p的個數(shù),且非葉子結(jié)點(diǎn)的子樹指針 P[i],指向關(guān)鍵字值屬于 [K[i], K[i+1])的子樹,注意為閉區(qū)間。
根本原因:b樹會在各個葉子節(jié)點(diǎn)存儲數(shù)據(jù),而b+樹只有在葉子節(jié)點(diǎn)會存儲數(shù)據(jù),在同樣高度的樹的請開給你下,B+樹會存儲更多的索引,且查找速度更快。