簡體   English   中英

從B +樹中刪除密鑰

[英]Deleting key from a B+ Tree

我的教授正在講授有關B +樹刪除的知識,我感到非常困惑。 據他說,從B +樹中刪除任何密鑰:

1- First navigate to the leaf *L* where it belongs.
2- If the *L* is at least half full if you can simply delete it.
3- If it contains d-1 elements then you need to redistribute and merge.

如果您看到下圖,在這里我想從B +樹中刪除19和20。

在此處輸入圖片說明

從B +樹中刪除19和20之后。

在此處輸入圖片說明

題:

我很困惑,為什么在這里根本需要重新分配和合並? 如果您只是簡單地從葉節點中刪除19和20,而不進行任何分配,那么它應該工作正常嗎? 為什么在這里進行重新分配? 誰能解釋?

是因為24的左指針指向20而不是19。這就是為什么20而不是19需要重新分配的原因。

B +樹是一個自平衡搜索樹。

自平衡樹需要保持最大樹深度,以與它擁有的元素數量的對數成比例。

B +這樣做,在插入和重新分配時進行拆分和添加層,在刪除時刪除節點。

好的,我了解這個問題。

B +樹的屬性。

  • 所有葉子的深度應相同,並且每個葉子節點中的最小元素應等於樹的深度。 請參閱以下示例:

  • 所有葉子的深度相同,這里d = 2。

  • 每個葉節點必須包含d個元素,否則必須進行重新分配和合並。
  • 所有數據指針都包含在葉節點中。
  • 所有元素都應包含在葉節點中。
  • 除可能的根以外,節點上的d2*d鍵之間應該存在。
  • d + 12*d + 1子指針之間應該有。

在下面給出的B +樹中,每個節點都有22*2數據條目,可能的根除外。 每個節點最少有2個密鑰。

只有B +樹的根只能少於d個鍵,這是我們唯一的例外。

在我的問題中,當您刪除19 ,B + Tree的屬性沒有受到侵犯,但是當您刪除20 ,節點中包含的元素總數小於d。 因此,必須執行重新分配和合並,以便不違反B +樹的屬性。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM