标题可能不是最清楚的。我为此道歉。
想象一下,我有一个评论列表。每条评论都可以拥有自己的评论列表(评论回复),每条评论回复都可以有自己的评论回复列表,依此类推。
看起来有点像这样:
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维数组?
答案 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。