24

複数のオブジェクトで構成されるツリーがあり、各オブジェクトには名前 ( string)、ID ( int)、および場合によっては同じ型の子の配列があります。ツリー全体を調べて、すべての ID と名前を出力するにはどうすればよいですか?

私はプログラミングが初めてで、率直に言って、レベルがいくつあるのかわからないので、これに頭を悩ませています。現在foreach、ルートの直下にある親オブジェクトを取得するためにループを使用していますが、これは子を取得できないことを意味します。

4

2 に答える 2

52

再帰を使用するアルゴリズムは次のようになります。

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
  }
}
于 2009-01-14T16:39:54.810 に答える
0

再帰はいつでも使用できますが、「現実世界」のプログラミング シナリオでは、深さを追跡しないと悪い結果が生じる可能性があります。

二分木に使用される例を次に示します: http://www.codeproject.com/KB/recipes/BinarySearchTree.aspx

データ構造全体に慣れていない場合は、リンクされたリストやその他のツリー構造をグーグルで検索します。豊富な知識があります。

于 2009-01-14T16:40:42.327 に答える