1

次のようなメソッドがあります。

    public IEnumerable<Node> TraverseTree(Node root)
    {            
        if(root.Children != null)
        {
            foreach(var item in root.Children)
                TraverseTree(item);
        }

        yield return root;
    }

そして私がするとき:

var allItems = TraverseTree(someRootNode).ToList(); 

最初のノードのみを取得します。IEnumerable を使用する場合、再帰を使用することはできませんか? linq クエリが完全に実行されないように IEnumerable を使用できると便利です。

編集

申し訳ありませんが、私の Node クラスは次のようになります。

class Node
{
     public Node Val;
     public List<Node> Children = new List<Node>();
}
4

1 に答える 1