簡體   English   中英

這棵B +樹有效嗎?

[英]Is this B+ Tree Valid?

在B +樹中,是否可以存在一個非葉節點,以便其鍵值被刪除? 這意味着B +樹在其中間非葉節點中具有一個值,但在其任何葉節點中均沒有。

考慮以下結構。 我在研究B +樹時碰到了這個問題。 在該結構13中不是葉節點。 但這是一個非葉節點。 (實際上,它已在前面的說明中刪除。 圖片的鏈接。在此鏈接中,轉到頁面底部)

我不了解的樹的圖像

如果是,那么如何刪除數據?

這是一個錯誤還是我缺少什么?

您發布的圖片有效。 該樹返回的唯一數據是您在最后一行中找到的數據。 由於13已從樹中刪除,因此已從最后一行中刪除。 非葉節點中存在13的事實與您的結果無關緊要,當遍歷樹時,它只有一個可比較的值。 在這種情況下,如果將13更改為16 (基於上述約定),則樹的行為不會有所不同。

道格拉斯·費舍爾(Douglas Fisher)在B +樹上做了一個完整的視頻系列,與閱讀文章相比,學習起來更容易。 第1部分可以在這里找到。


編輯 :我在評論中的回復太長,因此我將其放在此處。 另外,這是有用的信息。

如果要搜索12並達到13 ,則將比較IS 12 < 1313 <= 12 ,左邊為true,因此您將向下遍歷到左邊的葉子。 無論13是否為16都會發生這種情況,因為12 < 16也是如此。

如果您要搜索16並達到13 ,則將比較IS 16 < 1313 <= 16 ,正確的表達式為true,因此您將遍歷到右邊的葉子。 然后,您將在那里找到16的值。

如果要搜索13 (不存在),則會詢問IS 13 < 1313 <= 13 ,正確的表達式為true,因此您將遍歷到右邊的葉子並發現那里沒有13並且此時您將被踢出13沒有價值。

暫無
暫無

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

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