0
一個B +樹我已經在不同的書都看過的定義包含了除根節點以下在B樹的根節點的子樹數
- 每個節點必須是至少半滿
- 如果根節點是索引節點,則它必須至少有兩個子節點。
我認爲第二個特例是允許B樹只有一個密鑰並且仍然有效。但是,如果B樹有許多節點,它仍然允許根節點只有兩個子樹?這難道不會像簡單的拆分和加入操作一樣打破B樹的保證嗎?
一個B +樹我已經在不同的書都看過的定義包含了除根節點以下在B樹的根節點的子樹數
我認爲第二個特例是允許B樹只有一個密鑰並且仍然有效。但是,如果B樹有許多節點,它仍然允許根節點只有兩個子樹?這難道不會像簡單的拆分和加入操作一樣打破B樹的保證嗎?
但是,如果B樹有許多節點,它仍然允許根節點只有兩個子樹?
是的,根是特殊的,因爲每個其他的內部節點都有它可以合併的兄弟。
假設我們刪除了一個密鑰,結果,一些內部節點的孩子太少了。在通常的B樹算法中,我們有兩個選項:讓這個節點從兄弟姐妹那裏接受一些孩子,或者直接合並兄弟姐妹(可能會將缺陷向根傳播)。這兩者都不是根的選項,所以我們只是將其從最小兒童的要求中排除。這會將給定數量的鍵的最大高度最多增加一個,因此操作的漸近運行時間不受影響。
你能澄清一點嗎? – 2014-10-16 14:55:55