關于這個話題是一個老生常談的問題了,但是有時候好多人總是傻傻搞不明白
首先我們來總結一下b樹和B+樹的主要區(qū)別测摔,關于這兩個的基本定義置济,其實我也說不太明白,畢竟好長時間沒有實際做過這些了锋八,但是一些主要的區(qū)別我們還是必須要清楚的浙于。
首先B樹和B+樹,都有節(jié)點和指針挟纱,也就是書上定義的Ki和Pi羞酗,原諒寫的不夠標準,不怎么熟悉Markdown的語法樊销;下面我們就主要來說說兩者的主要區(qū)別:
首先來看看B樹和B+樹的圖片整慎,圖片來自網絡:
B-樹的主要特征是Pi比Ki要多一個脏款,另外非葉子結點的指針: P[1], P[2], …, P[M];其中 P[1]指向關鍵字小于 K[1]的子樹裤园, P[M]指向關鍵字大于 K[M-1]的子樹撤师,其它 P[i]指向關鍵字屬于 (K[i-1], K[i])的子樹,注意為開區(qū)間拧揽。
而B+樹的主要特征是k的個數等于p的個數胡桃,且非葉子結點的子樹指針 P[i]掠抬,指向關鍵字值屬于 [K[i], K[i+1])的子樹,注意為閉區(qū)間。
根本原因:b樹會在各個葉子節(jié)點存儲數據桅打,而b+樹只有在葉子節(jié)點會存儲數據砍的,在同樣高度的樹的請開給你下拭嫁,B+樹會存儲更多的索引惕医,且查找速度更快。