簡體   English   中英

在B Plus樹中刪除索引后,是否會刪除索引中的鍵?

[英]Will key in the index be removed after deletion in B Plus tree?

我對B +樹中的刪除有些困惑。 我在Google中進行了大量搜索,發現要刪除的鍵出現在索引中時,有兩種實現方式:

  1. 刪除索引中的鍵
  2. 將密鑰保留在索引中

來自https://www.javatpoint.com/b-plus-tree-deletion的算法使用第一種方法。

在此處輸入圖片說明

來自https://www.cs.princeton.edu/courses/archive/fall08/cos597A/Notes/BplusInsertDelete.pdf的算法使用第二種方法。

在此處輸入圖片說明

所以我真的很想知道哪一個是正確的。

但是我更傾向於將其視為未定義的行為。 在這一點上,有人可以幫助我找出它們之間的優缺點嗎? 以及如何在它們之間進行選擇?

提前致謝。

兩種方法都是正確的。

您突出顯示的差異不是刪除/不刪除內部鍵,而是更新/不更新它們。

顯然,當您刪除一個值(即葉節點中的鍵)時,不會違反b-plus-tree屬性:所有子值都仍在父信息指定的范圍內。 僅僅從葉子中刪除一個值就永遠不會破壞這個范圍規則。 當您更新到該葉子的路徑中的內部關鍵字(根據方法1)時,此規則仍然有效,這僅在刪除的值是其葉子中最左邊的值時才需要。

請注意,經過長時間的相同操作(插入,刪除),這兩種方法可能會產生完全不同的樹。

但是平均而言,第二種方法要做的工作要少一些。 但是,這種差異並不明顯。

暫無
暫無

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

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