複数のオブジェクトで構成されるツリーがあり、各オブジェクトには名前 ( string
)、ID ( int
)、および場合によっては同じ型の子の配列があります。ツリー全体を調べて、すべての ID と名前を出力するにはどうすればよいですか?
私はプログラミングが初めてで、率直に言って、レベルがいくつあるのかわからないので、これに頭を悩ませています。現在foreach
、ルートの直下にある親オブジェクトを取得するためにループを使用していますが、これは子を取得できないことを意味します。
複数のオブジェクトで構成されるツリーがあり、各オブジェクトには名前 ( string
)、ID ( int
)、および場合によっては同じ型の子の配列があります。ツリー全体を調べて、すべての ID と名前を出力するにはどうすればよいですか?
私はプログラミングが初めてで、率直に言って、レベルがいくつあるのかわからないので、これに頭を悩ませています。現在foreach
、ルートの直下にある親オブジェクトを取得するためにループを使用していますが、これは子を取得できないことを意味します。
再帰を使用するアルゴリズムは次のようになります。
printNode(Node node)
{
printTitle(node.title)
foreach (Node child in node.children)
{
printNode(child); //<-- recursive
}
}
これは、再帰がどれだけ深くネストされているかを追跡するバージョンです (つまり、ルートの子、孫、ひ孫などを出力しているかどうか):
printRoot(Node node)
{
printNode(node, 0);
}
printNode(Node node, int level)
{
printTitle(node.title)
foreach (Node child in node.children)
{
printNode(child, level + 1); //<-- recursive
}
}
再帰はいつでも使用できますが、「現実世界」のプログラミング シナリオでは、深さを追跡しないと悪い結果が生じる可能性があります。
二分木に使用される例を次に示します: http://www.codeproject.com/KB/recipes/BinarySearchTree.aspx
データ構造全体に慣れていない場合は、リンクされたリストやその他のツリー構造をグーグルで検索します。豊富な知識があります。