Mostrar una lista de nodos en un TreeView
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
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.