2011-02-05 89 views
16

我想使用隱式指針來實現使用van Emde Boas佈局存儲在數組中的緩存遺忘二叉樹。樹中的所有項目都是32位整數,樹會變得相當大,因此存儲指針意味着至少增加3倍的數據量。如何使用van Emde Boas佈局來計算二叉樹中的指針

問題是,我想不出任何非迭代方式來計算指向左側和右側兒童的指針,給定一個節點索引(我可以在遍歷樹時跟蹤任何信息)。許多論文/講座都提到了帶有隱式指針的樹,但我沒有看到用於計算指針的算法。有沒有一種有效的方法來做到這一點?

+0

你需要從索引中計算出它嗎?在我看來,你只需要從當前節點計算一個特定的子節點。如果您願意瞭解當前級別,請在當前節點的路徑上保留一堆偏移量,並在不同級別上放置所有偏移量的數組,您應該可以執行此操作。我不知道跟蹤這些堆棧會追加多少開銷,這可能不值得。 – btilly 2011-02-05 17:46:43

回答

6

鮑勃科普蘭有一個很好的執行van Emde Boas trees at GitHub。他使用隱式指針並通過首先計算寬度優先指針來計算指針,之後,vEB指針是一個簡單的條件指針。