一尘不染

在C#中遍历对象树

algorithm

我有一棵由几个对象组成的树,其中每个对象都有一个名称(string),id(int)以及可能具有相同类型的子代数组。如何遍历整棵树并打印出所有ID和名称?

我是编程的新手,坦白说,我无法解决这个问题,因为我不知道有多少级。现在,我正在使用foreach循环在根目录下直接获取父对象,但这意味着我无法获取子对象。


阅读 520

收藏
2020-07-28

共1个答案

一尘不染

使用递归的算法如下所示:

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
  }
}
2020-07-28