Necesito dibujar un árbol de estructura corporativa (algo así como un árbol genealógico) en C#. Todo el código auxiliar está allí. Es de color, interactivo y elegante. El único problema es que el algoritmo que realmente decide dónde colocar cada nodo me causa mucha pena.Algoritmo para dibujar árboles de manera eficiente
Por el momento, las cajas tienen un tamaño de 100x50, y tengo una clase llamada StaffNode
que representa un miembro del personal en una determinada coordenada x, y.
El algoritmo solo necesita crear un List<StaffNode>
con las x e y apropiadas.
Esto es increíblemente complicado.
Básicamente, el algoritmo es recursivo a lo largo de la estructura corporativa, por lo tanto, izquierda-> derecha, luego arriba-> abajo a lo largo del árbol. Obviamente, es malo si dos nodos están uno encima del otro.
puedo pensar en algunos algoritmos que puedan producir algo como esto:
*
o O
o o o o o O
o O O O O O
O
Mientras que algo como esto podría ser mejor, ya que el árbol es muy grande y el espacio es muy limitado:
*
o O
o o o o o O
o O O O O O
O
¿Alguno de ustedes tuvo que dibujar un árbol como este antes? Si lo tienes estoy seguro de que has encontrado los muchos obstáculos que tengo. ¿Algun consejo? Hasta ahora he pasado un día entero en él.
lo que estás tratando de hacer? ¿No debería hacerse en Microsoft Visio o algo así? – DrStrangeLove
Tome un solucionador de Tetris ... – Dialecticus
@DrStrangeLove No, estoy escribiendo una visualización interactiva. – user1002358