- Recorrido en Amplitud
- Determinar Máximo y Mínimo
- Altura del Arbol
- Profundidad de un Nodo en específico
- Determinar los nodos hojas
- Determinar los Nodos Intermedios
- Insertar Nodo
Una de las mayores dificultades encontradas al desarrollar esto (ademas del tiempo) fueron lograr el "retraso" deseado para que se pudiera ver la simulación del recorrido que lo solucioné con esto. Y el otro fue lograr dibujar las líneas que unieran los nodos.
En este ultimo punto (en el cual aun no logro descubrir porque no me funcionan las soluciones mas habituales de internet) a lo que recurrí desesperadamente para poder dibujar las lineas fue:
Como use un Panel para dibujar en el los nodos este crea el método private void panel1_Paint(object sender, PaintEventArgs e) en el cual se ejectuta todo lo que este dentro de el cada vez que se "dibuja" en el Formulario; y tambien cree la funcion "pintar" que recibe como parametros un objeto de tipo NodoT y un objeto de tipo PrintEventArgs. Al hacerlo asi me resulto mas facil dibuja
public void pintar(NodoT Raiz, PaintEventArgs e) {Y como no se aun como se usa la clase PrintEventArgs decidí llamar a Pintar dentro de panel1_Paint con el objeto PrintEventArgs de este.
Pen lapiz = new Pen(Color.Red, 2);
if (Raiz != null){
if (Raiz.NodoIzquierdo != null){
e.Graphics.DrawLine(lapiz, Raiz.t.Location.,Raiz.NodoIzquierdo.t.Location);
pintar(Raiz.NodoIzquierdo, e);
}
if (Raiz.NodoDerecho != null)
{
e.Graphics.DrawLine(lapiz, Raiz.t.Location,Raiz.NodoDerecho.t.Location);
pintar(Raiz.NodoDerecho, e);
}
}
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
pintar(Raiz,e);
}
Al hacerlo asi tambien me resultó mas facil dibujar las lineas de forma Recursiva.
Descargar Proyecto.
Fuentes: http://www.algoritmia.net/articles.php?id=17
Tu eres el papu, de papus realmente el papu (8)
ResponderEliminar