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;
}
}
}
}