我有一个愚蠢的树实现及其常规顺序的迭代。
类似的东西(代码只是说明性的):
public IEnumerable<ReferenceNode<TItem, TKey>> AllBellow(ReferenceNode<TItem, TKey> node)
{
if (/*some codition that tells me that i can return this*/)
{
yield return node;
}
else
{
foreach (var child in node.Children)
{
foreach (var grandChild in AllBellow(child))
{
yield return grandChild;
}
}
}
}
是的,那么我怎么能从根开始反转迭代呢?我的意思是,而不是向下,从向左到向右,而不是向下和向右到左 ...
如果问题不是很清楚,请帮我理顺
答案 0 :(得分:1)
据我所知,你只需要扭转孩子:
public IEnumerable<ReferenceNode<TItem, TKey>> AllBellow(ReferenceNode<TItem, TKey> node)
{
if (/*some codition that tells me that i can return this*/)
{
yield return node;
}
else
{
foreach (var child in node.Children.Reverse())
{
foreach (var grandChild in AllBellow(child))
{
yield return grandChild;
}
}
}
}