这需要递归是一个误解。这 将 需要一个堆栈或队列和最简单的方法是使用递归来实现它。为了完整起见,我将提供一个非递归答案。
static IEnumerable<Node> Descendants(this Node root){ var nodes = new Stack<Node>(new[] {root}); while (nodes.Any()) { Node node = nodes.Pop(); yield return node; foreach (var n in node.Children) nodes.Push(n); }}
例如,使用以下表达式来使用它:
root.Descendants().Where(node => node.Key == SomeSpecialKey)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)