我有一棵由多个对象组成的树,其中每个对象都有一个名称 ( 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
如果您对整个数据结构不熟悉,我会搜索链接列表和其他树结构。有丰富的知识需要掌握。