Отображение списка узлов в древовидном представлении
Вопрос
У меня есть объект node, который определяет уровень узла
public class Node
{
public int Level { get; set; }
}
Я хочу использовать упорядоченный список узлов для построения treeview
var nodes = new[]
{
new Node(){Level = 0},
new Node(){Level = 1},
new Node(){Level = 1},
new Node(){Level = 1},
new Node(){Level = 2},
new Node(){Level = 1},
new Node(){Level = 2},
new Node(){Level = 2},
new Node(){Level = 3},
};
Каков наиболее эффективный способ сделать это?
Спасибо
Рохан
Решение
Следуя примеру Boo, вы захотите сохранить стек узлов по мере перехода на более высокий уровень.Если уровень на текущем узле выше, поместите предыдущий узел в стек и используйте его в качестве родительского.Если уровень ниже предыдущего узла, извлеките n узлов из стека (n = previous_level - current_level) и используйте новую вершину стека в качестве родительской.
Другие советы
Выполните цикл по вашему списку узлов.Начиная с индекса 0, запишите уровень этого узла.При всех последующих индексах сверяйте уровень с последним зарегистрированным уровнем.Если выше, добавьте его в качестве подузла последнего добавленного узла.Если ниже, хорошо..если проблемы в нижнем регистре..найдите соответствующий узел, к которому его нужно добавить.