C# 走文件夹树,自下而上

C# 走文件夹树,自下而上,c#,.net,recursion,directory,binary-tree,C#,.net,Recursion,Directory,Binary Tree,我正在寻找使用C#/.NET 3.5快速有效地浏览文件夹的方法 例如: -0 --1 ---12 --2 ---21 ---22 ---23 第一次步行:12,21,22,23 然后:1,2 谢谢以通常的方式遍历树,并将包含每个节点和节点级别的对象添加到IEnumerable public class DirectoryNode { public DirectoryInfo Dir { get; set; } public int Level { get; set; } }

我正在寻找使用C#/.NET 3.5快速有效地浏览文件夹的方法

例如:

-0
--1
---12
--2
---21
---22
---23

第一次步行:12,21,22,23 然后:1,2


谢谢

以通常的方式遍历树,并将包含每个节点和节点级别的对象添加到
IEnumerable

public class DirectoryNode
{
    public DirectoryInfo Dir { get; set; }
    public int Level { get; set; }
}

public IEnumerable<DirectoryNode> myNodes;

您需要每个节点的深度,并且需要在开始遍历树之前找到所有节点的最大深度。因此,您需要以前序、中序或后序遍历方式遍历所有节点,找到它们的深度,然后以与深度相反的顺序再次遍历整个树。

您将到达树的根。你只想遍历那个特定的分支吗?遍历所有的分支,顺序并不重要,只要它们处于相同的“级别”,那么我建议以通常的方式遍历树,从根开始,只保留你想要的节点。如果您只需要特定级别的节点,可以使用计数器跟踪当前级别,并丢弃所有不需要的节点。好的,但我需要所有节点,我不想创建数百个临时列表来跟踪,我想在一个函数中执行此操作,该函数将返回IEnumerable
var result = myNodes.OrderByDescending(node => node.Level);