[英]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;
};
既然我現在只是將它作為一個業余項目實施,那么在現實生活中的數據庫系統可能會遇到哪些挑戰?
我可以想到兩個原因:
從B +樹中刪除值的算法可能會導致內部塊A的子塊太少。 如果A左邊或右邊的塊都不能將條目傳遞給A來解決此沖突,則塊A需要合並為同級塊B。這意味着塊A的所有子塊都需要具有它們的子塊。父指針已更新為塊B。這是一項額外的工作,在刪除操作中需要增加(很多)塊的數量。
它代表執行標准B + Tree操作實際上並不需要的額外空間。 通過B + Tree搜索值時,您可以輕松地跟蹤到該葉級別的路徑,並將其用於在樹中向上回溯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.