1
我試圖將基於列表的樹實現轉換爲基於數組的實現,其中第i個索引處的父節點,第2ith索引處的左側子節點以及第2i + 1個索引處的右側子節點。由於某些原因,轉換會導致節點數量較多的樹數據丟失。我想知道在執行此操作時需要檢查的所有邊界條件。謝謝!二叉樹的數組實現
我試圖將基於列表的樹實現轉換爲基於數組的實現,其中第i個索引處的父節點,第2ith索引處的左側子節點以及第2i + 1個索引處的右側子節點。由於某些原因,轉換會導致節點數量較多的樹數據丟失。我想知道在執行此操作時需要檢查的所有邊界條件。謝謝!二叉樹的數組實現
假設你的語言使用從零開始的索引節點i
的孩子進入2i + 1
和2i + 2
不2i
和2i + 1
。後者適用於基於單一指數的指數。
你把頭放在0還是1?選擇'0'肯定會導致問題,除非你調整你的公式。
'list'和'array'建議你已經有了一種語言。也許你可以用那種語言來標記你的問題? –
那麼,如果所有節點都有相同的子節點數,那麼它就是簡單的數學運算: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。 –
只有「更多節點」?多大?你沒有受到整數溢出的困擾,對嗎? – derobert