2017-04-25 3 views
1

基本的には、多くのリストにある各リストを繰り返し処理する必要があります。量は与えられていないので、私は再帰が使われなければならないと思うが、私たちの代入は再帰的な方法を持たないので、今は紛失している。 PS。コードは自分のコードと同じですが、正しく翻訳していない可能性がありますので、その方法に注意してください。リスト要素を持つリストツリーをナビゲートする方法

EDIT:プログラムが行うこと - 状態を作成することができます - 次に状態にサブ状態を追加し、サブ状態などをサブ状態などに追加します。あなたはおそらく何をしたいとしている何

class Tree 
{ 
    public List<Branch> Branches; 
    public void Print() 
    { 
     foreach (Branch item in Branches) 
     { 

     } 
    } 
class Branch 
{ 
    public State state; 
    public List<Branch> branch; 
} 
class State 
{ 
    public string name; 
    public string size; 
} 

答えて

1

は、あなたが印刷に持って空のforeach()でそれを反復処理、その後、いくつかのprintRecursive(支店支店)メソッドを作成することです。サブブランチのないブランチに空のリストがあると仮定しています。

printRecursive(Branch branch) { 
    printState(branch.state); 
    foreach(Branch b in branch.branch) { 
     printRecursive(b); 
    } 
} 

printState(State state) { 
    Console.WriteLine("State: " + state.name + ". Size: " + state.size); 
} 

EDIT:あなたは、各繰り返しでツリーを作成する場合

あなたも、これらの余分な方法を必要としない方法は、次のようになります。それを実行するには実用的ではないようですが、新しい方法を作ることができない場合、私は別の選択肢を見ません。

void Print() { 
    foreach (Branch b in Branches) { 
     // print b.state here 
     Tree tree = new Tree(); 
     tree.Branches = b.branch; 
     tree.Print(); 
    } 
} 
+0

私のプログラミング講師は、私たちが与えられた方法以外の方法を使うことはできないと言いました。 –

+0

ああ、私が見ているように、あなたはそれを言うと、あなたは他の2つの方法を作る必要さえない。 Print()内でPrint()をもう一度呼び出すだけです。 Print()をもう一度呼び出す前/後に、現在のブランチを実際にPrint()してください。 –

関連する問題