Pergunta

Eu tenho um objeto nó que especifica o nível de nó

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

Eu quero usar uma lista ordenada de nós para construir um 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},
};

O que é a maneira mais eficiente de fazer isso.

Graças

Rohan

Foi útil?

Solução

Na sequência do Boo, você vai querer manter uma pilha dos nós como você passo para um nível superior. Se o nível for maior no nó actual, empurrar o nó anterior na pilha e usá-lo como o pai. Se o nível é inferior ao nó anterior, pop n nodos da pilha (n = previous_level - current_level). E usar a nova pilha-top como o pai

Outras dicas

Curva sobre sua lista de nós. Começando com índice 0, gravar Nível do nó. Em todos os índices subseqüentes verificar o nível contra o último nível registado. Se superior, adicioná-lo como um subnó do último nó adicionado. Se inferior, bem .. Se os casos de menores problemas .. encontrar o nó apropriado para adicioná-lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top