Пройдите по дереву папок, снизу вверх - PullRequest
0 голосов
/ 05 августа 2010

Я ищу идеи для быстрого и эффективного обхода папок снизу вверх с использованием C # /. NET 3.5

например:

-0
--1
--- 12
--2
--- 21
--- 22 * ​​1012 * --- 23

Первая прогулка, хотя:12,21,22,23 затем: 1,2

Спасибо

Ответы [ 2 ]

2 голосов
/ 05 августа 2010

Пройдите по дереву обычным способом и добавьте объект, содержащий каждый узел и уровень узла, в IEnumerable.

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

public IEnumerable<DirectoryNode> myNodes;

Затем, чтобы получить список, просто вызовите полученный результат IEnumerable с помощью OrderByDescending метода расширения linq, например:

var result = myNodes.OrderByDescending(node => node.Level);
0 голосов
/ 05 августа 2010

Вам нужна глубина каждого узла, и вам нужно найти максимальную глубину всех узлов, прежде чем начинать обход дерева.Таким образом, вам нужно пройти все узлы в обходе предзаказа, порядка или постопорядка, найти их глубины, а затем снова пройти весь вал в обратном порядке глубины.

...