2017-05-09 50 views
0

我正在尋找如何最好地設計將有效使用緩存的N元樹的方法。我期望樹上的絕大多數操作都是從節點到根的遍歷,因此我想要的目標是用例,對於插入/刪除相當昂貴,我沒有問題。設計緩存優化的N元樹

在我的頭上,前後存儲節點(即根結尾)是一個理想的屬性。然後我猜你可以將它存儲在BFS或DFS中 - 對於這種情況最適合?一旦樹達到一定的大小,它是否重要?

我也簡要介紹了這個http://www.cs.au.dk/~gerth/papers/soda02.pdf - 這聽起來很有希望,但這不是一個BST,我不需要搜索任何種類的東西,只需要進行孩子到根的遍歷。

編輯:是的,將需要實現它的向量/數組ontop,所以連續的內存。它不需要是BST。節點通過矢量/陣列的隨機訪問屬性直接訪問,它是遍歷從那裏的根是問題

任何想法?

+0

_Why_你遍歷樹?爲了找到樹葉和樹根之間的節點,我假設?你如何找到正確的葉節點?如果你通過'Node *'找到葉子,那麼你不能移動它們,這會使插入複雜化。 – MSalters

+1

您能否將您的節點存儲在連續的數據結構中,如矢量?你的數據有多大,你的樹有多大? –

+0

不知道我完全理解了這個問題,但是如果你想要一個使用緩存的BST去B +樹。現在已經有很多實現了。 https://en.wikipedia.org/wiki/B%2B_tree – AlexG

回答