我有這樣的問題:給定一數量的陣列(在Perl例如,或任何其他語言):如何從多個列表中生成父子元素的有序列表?
1. (A,B,C)
2. (B,D,E,F)
3. (C,H,G)
4. (G,H)
在每個陣列中,第一元件是父,其餘都是它的孩子。在這種情況下,元素A有兩個子元素B和C,B有三個子元素D,E和F等。我想處理這組數組,並生成一個包含正確順序的列表。在這種情況下,A是根元素,所以B和C,那麼在B下是D,E和F,在C下是G和H,G也有H作爲子元素(這意味着一個元素可以有多個父元素)。這應該是結果數組。
重要:看看數組編號3,H出現在G之前,即使它是第四個數組中的G的子元素。因此,每個數組中沒有特定的子級次序,但是在最終結果(如下所示)中,在子級/子級之前必須有任何父級。 (A,B,C,D,E,F,G,H)或(A,C,B,D,E,F,G,H)或(A,B,C,G,H) ,D,E,F)
很高興有一些遞歸的方式來創建該數組,但不是必需的。 感謝您的時間..
謝謝。我已經針對一些「測試樣本」運行了代碼,並且它給出了正確的結果。好的代碼沒有任何循環... – Moni 2012-04-25 20:42:12
@Gagan:如果您已經預先知道數據的根,您可以刪除大量的代碼。我已經用* ikegami *解決方案中的數組散列編輯了我對tider解決方案的回答。 – Borodin 2012-04-25 20:54:40
在這方面,預知是什麼意思?我確實知道數據的來源。 – Moni 2012-04-25 21:30:29