私はこの問題を持っている:(Perlで例えば、または任意の他の言語)アレイの数が与えられる:各アレイ内複数のリストから親子要素の順序付きリストを生成する方法は?
1. (A,B,C)
2. (B,D,E,F)
3. (C,H,G)
4. (G,H)
を、最初の要素は親であり、残りは、その子です。この場合、要素Aには2つの子BとCがあり、Bには3つの子D、E、Fなどがあります。この配列のセットを処理し、正しい順序を含むリストを生成したいと思います。この場合、AはとてもB及びCが来る、ルート要素であり、その後、Bの下でD、E及びFであり、そしてCの下でG及びHは、であり、Gは、要素が複数の親を持つことができることを意味子としてHを有します( )。結果の配列でなければなりません。
重要::配列番号3を参照してください.HはGの前にあります。ただし、4番目の配列のGの子です。したがって、各配列には子どもの特定の順序はありませんが、最終結果(下に示すように)には、子/レンより前に親を持つ必要があります。 (A、B、C、D、E、F、G、H)または(A、C、B、D、E、F、G、H) 、D、E、F)
は、その配列を作成するためのいくつかの再帰的な方法ではなく、要件を持っていいだろう。それは、ノードが複数の親を持っている可能性のためではなかった場合、これは、単純なポストオーダートラバースだろう
感謝。いくつかの「テストサンプル」に対してコードを実行していますが、正しい結果が得られます。ループなしのニースコード... – Moni
@Gagan:データのルートを事前に知っている場合は、大きなコードのチャンクを削除できます。私は* ikegamiの*ソリューションのように配列のハッシュを使ってチルダの解答を編集しました。 – Borodin
この文脈で予知していることはどういう意味ですか?私はデータの起源を知っています。 – Moni