2012-12-12 39 views
1

我試圖將基於列表的樹實現轉換爲基於數組的實現,其中第i個索引處的父節點,第2ith索引處的左側子節點以及第2i + 1個索引處的右側子節點。由於某些原因,轉換會導致節點數量較多的樹數據丟失。我想知道在執行此操作時需要檢查的所有邊界條件。謝謝!二叉樹的數組實現

+0

'list'和'array'建議你已經有了一種語言。也許你可以用那種語言來標記你的問題? –

+0

那麼,如果所有節點都有相同的子節點數,那麼它就是簡單的數學運算:root @ 0,L @ 1,R @ 2,LL @ 3,LR @ 4,RL @ 5,RR @ 6 - 所以你可以看到模式 - 左邊的孩子在2 * i + 1,右邊的孩子在2 * i + 2。如果您的方法正確實施,沒有問題。關於邊界條件:您可以在最大N代處求和(2 ** 0 ... N)<= arrayLength。 –

+0

只有「更多節點」?多大?你沒有受到整數溢出的困擾,對嗎? – derobert

回答

2

假設你的語言使用從零開始的索引節點i的孩子進入2i + 12i + 22i2i + 1。後者適用於基於單一指數的指數。

0

你把頭放在0還是1?選擇'0'肯定會導致問題,除非你調整你的公式。