[英]B+ tree insertion order
有沒有辦法找到B+樹的原始插入順序?
我有這棵樹:
{ [ (1 2) 3 (5 6 7) ] 8 [ (9 10) 11 (12 13) 14 (14 16 17) 18 ( 19 20) ] }
不。
例如,在您的情況下,最后兩個插入可能是7, 17
或17, 7
並且絕對無法分辨哪個是哪個。 確實, 5, 6, 7
三者中的一個是在另外兩個之后插入的,沒有記錄哪個是哪個。
這也可以從鴿巢原理中直接看出。 首先,讓我們為可以有多少k
路 B 樹設置一個上限,其中有n
東西。
任何具有n
事物的b-tree
的結構都可以編碼為節點大小的流。 從頂層節點的大小,你知道有多少第二層節點,第二層第三層也是如此。 一個節點可以有1..k
東西。 節點不能多於元素。 因此,我們可以通過首先指定有多少個節點,然后指定節點的大小來指定 B 樹。 (並非所有數字集都是 B 樹。)對於 B 樹的每個大小s
,都有k^s <= k^n
個。 因此nk^n
是可以有多少k
路 B 樹的上限。 這是指數增長。
但是可以插入元素的順序數是n!
. 此函數的增長速度嚴格快於指數增長,因此您無法從 B 樹中恢復順序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.