簡體   English   中英

為什么我們不將父指針保存在B +樹中以便在樹中輕松向上遍歷?

[英]why we are not saving the parent pointer in B+ Tree for easy upward traversal in tree?

如果在拆分和插入過程中添加指向父節點的指針以簡化操作,這會影響很多。 然后,通用節點將看起來像這樣-

class BPTreeNode{
    bool leaf;
    BPTreeNode *next;
    BPTreeNode *parent; //add-on
    std::vector < int* >pointers;
    std::vector < int >keys;
};

既然我現在只是將它作為一個業余項目實施,那么在現實生活中的數據庫系統可能會遇到哪些挑戰?

我可以想到兩個原因:

  1. 從B +樹中刪除值的算法可能會導致內部塊A的子塊太少。 如果A左邊或右邊的塊都不能將條目傳遞給A來解決此沖突,則塊A需要合並為同級塊B。這意味着塊A的所有子塊都需要具有它們的子塊。父指針已更新為塊B。這是一項額外的工作,在刪除操作中需要增加(很多)塊的數量。

  2. 它代表執行標准B + Tree操作實際上並不需要的額外空間。 通過B + Tree搜索值時,您可以輕松地跟蹤到該葉級別的路徑,並將其用於在樹中向上回溯。

暫無
暫無

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

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