Отобразить список узлов в TreeView - PullRequest
0 голосов
/ 05 мая 2009

У меня есть объект узла, который определяет уровень узла

public class Node
{
    public int Level { get; set; }
}

Я хочу использовать упорядоченный список узлов для построения древовидного представления

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},
};

Какой самый эффективный способ сделать это.

Спасибо

Rohan

Ответы [ 2 ]

0 голосов
/ 05 мая 2009

Вслед за Boo вы захотите сохранить стек узлов при переходе на более высокий уровень. Если уровень на текущем узле выше, поместите предыдущий узел в стек и используйте его в качестве родительского. Если уровень ниже, чем у предыдущего узла, вытолкните n узлов из стека (n = предыдущий_уровень - текущий_уровень) и используйте новую вершину стека в качестве родителя.

0 голосов
/ 05 мая 2009

Цикл по вашему списку узлов. Начиная с индекса 0, запишите уровень этого узла. Во всех последующих индексах сверяйте уровень с последним записанным уровнем. Если выше, добавьте его как подузел последнего добавленного узла. Если ниже, хорошо .. если проблемы в нижнем регистре .. найти соответствующий узел, чтобы добавить его к.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...