遍历c#中的对象树

Bee*_*key 19 c# algorithm tree tree-traversal

我有一个由几个对象组成的树,其中每个对象都有一个名称(字符串),id(int)和可能是相同类型的子数组.如何浏览整个树并打印出所有ID和名称?

我是编程的新手,坦白说,我无法解决这个问题,因为我不知道有多少级别.现在我正在使用foreach循环直接在rot下面获取父对象,这意味着我无法得到孩子们.

Chr*_*isW 46

使用递归的算法如下:

printNode(Node node)
{
  printTitle(node.title)
  foreach (Node child in node.children)
  {
    printNode(child); //<-- recursive
  }
}
Run Code Online (Sandbox Code Playgroud)

这是一个版本,它还跟踪递归的嵌套程度(即我们是否打印了root,grand-children,grand-grand-children等的子项):

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
  }
}
Run Code Online (Sandbox Code Playgroud)