遍历c#中的对象树

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

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

使用递归的算法如下:

printNode(Node node) { printTitle(node.title) foreach (Node child in node.children) { printNode(child); //<-- recursive } } 

这是一个版本,它还跟踪递归的嵌套程度(即我们是否打印了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 } } 

好吧,你总是可以使用递归,但在“真实世界”编程场景中,如果你不跟踪深度,它可能会导致坏事。

以下是用于二叉树的示例: http : //www.codeproject.com/KB/recipes/BinarySearchTree.aspx

如果你是整个数据结构的新手,我会google链表和其他树结构。 这里有丰富的知识。