【问题标题】:Walk folder tree, bottom up遍历文件夹树,自下而上
【发布时间】:2011-03-25 13:05:25
【问题描述】:

我正在寻找使用 C#/.NET 3.5自下而上快速有效地遍历文件夹的方法

例如:

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

第一次走:12,21,22,23 那么:1,2

谢谢

【问题讨论】:

  • 你会在树的根部结束。你只是想走那个特定的分支吗?
  • 遍历所有分支,顺序不重要,只要它们在同一个“级别”
  • 那么我建议以通常的方式从根开始遍历树,只保留你想要的节点。如果您只想要特定级别的节点,您可以使用计数器跟踪您所在的级别,并丢弃所有不需要的节点。
  • 好的,但是我需要所有这些,我不想制作数百个临时列表来跟踪,我想在一个返回我 IEnumerable 的函数中执行此操作

标签: c# .net recursion directory binary-tree


【解决方案1】:

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

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

public IEnumerable<DirectoryNode> myNodes;

然后,要获取您的列表,只需使用 OrderByDescending linq 扩展方法调用生成的 IEnumerable,如下所示:

var result = myNodes.OrderByDescending(node => node.Level);

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多