C# 膨胀树结构#

C# 膨胀树结构#,c#,tree,C#,Tree,我有一个stree结构,基本上可以使用以下方法将其展平成阵列: public IEnumerable<T> Flatten() { return new[] { Value }.Union(_children.SelectMany(x => x.Flatten())); } public IEnumerable Flatten() { 返回新的[]{Value}.Union(_children.SelectMany(x=>x.flant());

我有一个stree结构,基本上可以使用以下方法将其展平成阵列:

    public IEnumerable<T> Flatten()
    {
    return new[] { Value }.Union(_children.SelectMany(x => x.Flatten()));
    }
public IEnumerable Flatten()
{
返回新的[]{Value}.Union(_children.SelectMany(x=>x.flant());
}

有没有一种方法可以扭转这种情况,使树结构恢复到“展平”之前的状态?

如果你的树是二叉树,这里有一个更简单的解决方案,否则请看一看

IEnumerable没有历史,所以没有。好的,有没有其他方法来实现这一点?本质上,我需要通过一个不支持递归结构(Thrift)的协议来传输树结构,然后在另一个包含父(和/或子)引用的类中恢复另一个侧包装T上的树,并传输该树结构基本上必须支持文件夹和文件。也就是说,顶层可以包含任意数量的文件或子文件夹。子文件夹可以再次包含任意数量的文件和子文件夹,以此类推