1. 程式人生 > 其它 >Flutter 表單

Flutter 表單

B樹

並不是心裡有b數的b數,而是一種多路平衡查詢樹。

維基百科對於B的解釋

魯道夫·拜爾Rudolf Bayer)和 艾華·M·麥克雷(Ed M. McCreight)於1972年在波音研究實驗室(Boeing Research Labs)工作時發明了B 樹,但是他們沒有解釋B 代表什麼意義(如果有的話)。道格拉斯·科默爾(Douglas Comer)解釋說: 兩位作者從來都沒解釋過B樹的原始意義。正如我們所見,“balanced”, “broad” 或 “bushy” 可能適合。其他人建議字母“B”代表 Boeing。源自於他的贊助,不過,看起來把B樹當作“Bayer”樹更合適些

高德納

Donald Knuth) 在他1980年5月發表的題為“CS144C classroom lecture about disk storage and B-trees”的論文中推測了B樹的名字取義,提出“B”可能意味Boeing 或者Bayer 的名字。

一棵m階B樹或為空樹,或為滿足如下特性的m叉樹:
(1)樹中每個節點最多有m棵子樹(即節點最多含有m-1個關鍵字)

(2)若根節點不是終端節點,則至少有兩棵子樹(即最少有2個位元組點)

(3)除了根節點外的所有非葉子節點至少有 m / 2 向上取整棵子樹(即除了根節點以外的所有非葉子節點至少有m / 2 向上取整後-1個關鍵字)

(4)非葉子節點結構如下:
n  P0  K1  P1  K2 ... Pn Kn

Ki (i = 1, 2, 3,...,n) 為n個關鍵字,所有Ki < Kj (i < j)

Pi (i = 0, 1, 2, ..., n)為n+1個指向子節點的指標,Pi 所指向子樹的所有節點值 均 大於 Ki, 均小於Pj (i < j)所指向的所有子樹節點值

(5)所有的葉子節點都出現在同一層上(最後一層),並且不帶任何資訊

如圖是一棵3階B樹(葉子節點沒有畫出來)

一棵有n個關鍵字,m階,高度為h的B樹,其高度範圍是多少?

LOGm(n+1) <= h <= LOG「m/2] ((n+1) / 2) + 1