Отображение списка узлов в древовидном представлении

StackOverflow https://stackoverflow.com/questions/822789

  •  03-07-2019
  •  | 
  •  

Вопрос

У меня есть объект 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, запишите уровень этого узла.При всех последующих индексах сверяйте уровень с последним зарегистрированным уровнем.Если выше, добавьте его в качестве подузла последнего добавленного узла.Если ниже, хорошо..если проблемы в нижнем регистре..найдите соответствующий узел, к которому его нужно добавить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top