gpt4 book ai didi

c# - 使用linq检查树的长度

转载 作者:太空狗 更新时间:2023-10-29 23:24:20 27 4
gpt4 key购买 nike

嗨,假设我有以下类型的树

public class Element
{
public List<Element> element;
}

假设树的根是

Element root = GetTree();

我知道可以使用递归来检查这棵树的长度但是可以使用 linq 检查这棵树的长度吗?

最佳答案

您可以编写一个扩展方法来递归检索所有元素。

var allElements = root.element.Traverse(el => el.element);

例如:

public static IEnumerable<T> Traverse<T>(this IEnumerable<T> source, Func<T, IEnumerable<T>> fnRecurse)
{
foreach (T item in source)
{
yield return item;

IEnumerable<T> seqRecurse = fnRecurse(item);
if (seqRecurse != null)
{
foreach (T itemRecurse in Traverse(seqRecurse, fnRecurse))
{
yield return itemRecurse;
}
}
}
}

关于c# - 使用linq检查树的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14891590/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com