2010-08-04 81 views
0

我在尋找通過使用C#/文件夾自下而上走路快而有效的方法思路NET 3.5步行文件夾樹,自下而上

例如:

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

第一步行雖然:12,21,22,23 然後:1,2

由於

+0

你會在樹的根部結束。你只是想走特定的分支? – 2010-08-04 23:09:09

+0

走遍所有分支,順序不重要,只要他們在同一個「級別」 – 2010-08-04 23:10:51

+0

然後我會建議以通常的方式從根目錄走樹,並且只保留你想要的節點。如果你只想要一個特定級別的節點,你可以跟蹤你的計數器級別,並拋出你不需要的所有節點。 – 2010-08-04 23:12:00

回答

2

遍歷樹通常的方式,並添加含有各節點與所述節點的方式的水平的物體IEnumerable

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

public IEnumerable<DirectoryNode> myNodes; 

然後,讓你的列表,只需打電話給你造成IEnumerableOrderByDescending LINQ擴展方法,像這樣:

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

我明白你的意思了,謝謝:) – 2010-08-05 00:20:44

0

你需要在每個節點的深度,你需要找到最大在開始遍歷樹之前所有節點的深度。所以你需要遍歷所有節點的前序,中序或後序遍歷,找到它們的深度,然後以相反的深度順序遍歷整個樹。

相關問題