C# 树状对象中的反向iteraction

C# 树状对象中的反向iteraction,c#,tree,logic,iteration,reverse,C#,Tree,Logic,Iteration,Reverse,我有一个愚蠢的树实现,它的迭代是按常规顺序进行的 类似(代码只是说明性的): public IEnumerable AllBellow(参考节点) { 如果(/*某个密码告诉我可以返回此*/) { 收益回报节点; } 其他的 { foreach(node.Children中的变量child) { foreach(在AllBellow中的var孙子(子)) { 收益回报孙子; } } } } 对,那么我如何从根开始,逆转迭代呢?我的意思是,与其往下走,从左到右,不如往下走,从右到左 如果问题

我有一个愚蠢的树实现,它的迭代是按常规顺序进行的

类似(代码只是说明性的):

public IEnumerable AllBellow(参考节点)
{
如果(/*某个密码告诉我可以返回此*/)
{
收益回报节点;
}
其他的
{
foreach(node.Children中的变量child)
{
foreach(在AllBellow中的var孙子(子))
{
收益回报孙子;
}
}
}
}  
对,那么我如何从根开始,逆转迭代呢?我的意思是,与其往下走,从左到右,不如往下走,从右到左


如果问题不太清楚,请帮助我理顺它

据我所知,您只需要颠倒儿童:

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;
            }
        }
    }
}
public IEnumerable AllBellow(参考节点)
{
如果(/*某个密码告诉我可以返回此*/)
{
收益回报节点;
}
其他的
{
foreach(node.Children.Reverse()中的var child)
{
foreach(在AllBellow中的var孙子(子))
{
收益回报孙子;
}
}
}
}

谢谢,但我不想使用linq,因为它对我的电脑来说可能太慢了scenario@NoProblemBabe:
yield-return
是LINQ的奠基之石。我知道它是后期迭代,将所有迭代和所有迭代连接起来。我在它内部做了相反的事情
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;
            }
        }
    }
}