2015-12-28 32 views
1

假設我有一個要插入到任何給定順序的B樹中的鍵值序列。插入所有元素後,我正在對其中一些元素執行刪除操作。它總是給出一個唯一的結果(以B-tree的形式)還是它可以根據刪除操作而有所不同?B樹的唯一性

從維基引用:

鏈路:從一個內部節點

在內部節點充當兩個 子樹的分離值的每個元素https://en.wikipedia.org/wiki/B-tree

缺失,因此,我們需要找到分居的替代品。注意 左子樹中的最大元素仍然小於 分隔符。同樣,右子樹中的最小元素仍然大於分隔符 。這兩個元素都在葉節點 中,任何一個都可以成爲兩個子樹的新分隔符。 以下算法上描述:

選擇一個新的分離器(在左子樹或任一最大元素在右子樹中的最小元素),從 刪除它是在葉節點,並更換元件用 新分隔符刪除。

上一步從葉節點 中刪除了一個元素(新分隔符)。如果該葉節點現在有缺陷(節點數少於所需的 ),則重新平衡從葉節點開始的樹。

我認爲根據刪除操作,它可能會因爲上面用粗體字引用的行而有所不同。我對嗎?幫助:)

+0

如果您包含指向您複製的wiki的鏈接,這將有所幫助。 –

+0

@LorenzMeyer鏈接添加。謝謝:) – ViX28

回答

2

如果你的問題是包含鍵值完全相同的收集兩個B樹是否始終具有相同的節點,那麼答案是否定的

注意,這也是例如true簡單的二叉樹。

但是,在B樹的情況下,這可能會更明顯,因爲B樹經過優化,可以最大限度地減少頁面更改並因此需要回寫緩慢的輔助存儲。

+0

在插入過程中,我認爲它將是完全相同的節點集合的關鍵值,但是當我們開始刪除時,它可能會因不同而不同。我正是這個意思。 – ViX28

+0

如果您的操作按照相同順序(插入,更新,刪除)發生,那麼所有節點確實是相同的。 –