Pregunta

Tengo un objeto de nodo que especifica el nivel de nodo

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

Quiero usar una lista ordenada de nodos para construir una vista de árbol

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

¿Cuál es la forma más eficiente de hacer esto?

Gracias

Rohan

¿Fue útil?

Solución

Siguiendo con Boo, querrás mantener una pila de nodos a medida que avanzas a un nivel superior. Si el nivel es más alto en el nodo actual, empuje el nodo anterior en la pila y utilícelo como el padre. Si el nivel es más bajo que el nodo anterior, extraiga los nodos de la pila (n = nivel_pasior - nivel_actual) y use la nueva parte superior de la pila como principal.

Otros consejos

Recorre tu lista de nodos. Comenzando con el índice 0, registre el nivel de ese nodo. En todos los índices subsiguientes, verifique el nivel contra el último nivel registrado. Si es superior, agréguelo como un subnodo del último nodo agregado. Si es más bajo, bueno ... si hay problemas de minúsculas, encuentre el nodo apropiado para agregarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top