2010-08-04 3 views
0

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

, например:.

-0
--1
--- 12
--2
--- 21 ---
--- 23
первая прогулка хотя: 12,21,22,23 тогда: 1,2

Благодаря

+0

Вы окажетесь в корне дерева. Вы просто хотите пройти эту конкретную ветку? –

+0

Прогуляйтесь по всем ветвям, порядок не важен, если они находятся на одном уровне « –

+0

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

ответ

2

обхода дерева обычным способом, и добавить объект, содержащий каждый узел и уровень узла к 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

Я понимаю, что вы имели в виду сейчас, спасибо :) –

0

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

Смежные вопросы