循环嵌套列表作为平面列表

时间:2015-08-09 05:37:52

标签: c#

标题可能不是最清楚的。我为此道歉。

想象一下,我有一个评论列表。每条评论都可以拥有自己的评论列表(评论回复),每条评论回复都可以有自己的评论回复列表,依此类推。

看起来有点像这样:

Comment1: Wow, that's cool |-Comment1.1: No, it's not. You're stupid. |-|-Comment1.1.1: Why the flame? |-Comment1.2: Yeah, I agree! Comment2: I like horses |-Comment2.1: Offtopic. |-|-Comment2.1.1: Does it really matter?

它显然有一个父子的树状物。但是说我不知道​​每个评论有多少级别。如何循环每条注释,就好像它是一个扁平的1维数组?

1 个答案:

答案 0 :(得分:2)

这种结构被称为树,你所要求的被称为"走树"。有很多方法可以做到这一点,递归是一个有趣的选择。

在获得特定答案之前,您必须提供更多信息,例如您现在存储树的数据结构。

这一切归结为一组循环,循环遍历树的每个分支中的所有子项。

当你使用递归时,你在当前节点的所有子节点上编写一个带有一个循环的函数,并且对于每个孩子,你调用相同的函数来覆盖它的孩子...

编辑:这是一个粗略的例子

void processNode(TreeNode t)
{
   // Here print it out to print all nodes or add it to an 
   //    ArrayList to just make a list, or whatever you please.
}

void walkTreeNode(TreeNode t)
{
    processNode(t);
    foreach (TreeNode child in t.getChildren())
       walkTreeNode(child);
}

现在,您只需使用树的根调用walkTreeNode。