2015-05-16 109 views
0

假設一個m階的B +樹。爲什麼非葉子節點必須至少有小孩(m/2)?或者如果這個屬性不滿意會發生什麼。B +樹中的非葉節點

+3

我投票結束這個問題作爲題外話,因爲這是一個類似家庭作業的問題,沒有證據證明提問者之前的工作。 – Gene

回答

2

如果您不執行半滿規則,您可以(有效)獲得不平衡的樹,例如,

     [root] 
        / \_________________________ 
        /        \ 
      [branch]         [branch] 
     /  \        ____/ | \___ 
     /  \       /  |  \ 
[1-record leaf] [1-record leaf] [100-record leaf] [100-record leaf] [100-record leaf] 

在這棵樹中找到第一條或第二條記錄比找到其他300條記錄需要的時間要少得多。

如果你讓樹葉只有一條記錄,樹枝只有一個鍵(因此有兩個孩子),我相信查找時間的差異可能會像log(m)那樣差(其中m是樹的順序)。沿完整節點的路徑查找記錄需要Θ(log(N)* log(m))時間(其中N =記錄的總數,因此log(N)與樹的高度成正比)沿着最小尺寸節點的路徑記錄一個記錄只需要Θ(log(N))時間(因爲你在每個分支處只進行一次比較,而在葉子處沒有)。

通過執行半滿規則,可以確保所有查找時間都是Θ(log(N)* log(m)),並且在彼此的常數因子內。