私は最近ここに質問をし、非常にエレガントな答えを得ました。ここでは、次のとおりです。複数のリストから複数の親子要素の順序付きリストを生成するにはどうすればよいですか?
ログインHow to generate an ordered list of parent-child elements from multiple lists?
私はここで別の木があることを意味重根、そこにすることができ、同様の問題を抱えています。以下はperlの例です。リスト@rules
のリストで
my @rules = (
[ qw(A B C) ],
[ qw(B D E) ],
[ qw(C H G) ],
[ qw(G H ) ],
[ qw(Z C ) ]
);
、Aは、最初の要素は、リスト内の要素の残りの親であり、一般的にBおよびCの親です。
この一連の配列を処理し、正しい順序を含むリストを生成したいと考えています。ここでAとZは他の要素の前に来なければなりません(AとZの順序は独立しているので重要ではありません)。ここでは、2つの例のソリューションは、以下のとおりです。
(A,Z,B,C,D,E,F,G,H), or (Z,A,B,D,E,F,C,G,H)
重要:配列番号3でルック。 Hは4番目の配列のGの子ですが、Gの前に来ます。したがって、各配列には子どもの特定の順序はありませんが、最後の結果(上に示されているように)には、子/レンになる前に親を持つ必要があります。
一つ簡単な解決策は、(それらが他のノードによって参照されないことを意味する)最初の要素としてのみ発生するすべてのノードを探し、すべての「偽」は、親、等割り当てることであろう。 (X root1 root2 ..) – Moni
リンク先のコードは、すべてのルートを見つけます。どうしたの?あなたの試みはどこですか? – ikegami
@ikegami:最初のコメントでこの方法で説明した問題を既に解決しており、すぐに投稿し、変更を加える必要があります。私は数百万の開発者の世界が何を持っているかを探しています:-) – Moni