//Dibujar el arbol public void DibujarArbol(Graphics grafo, Font fuente, Brush Relleno, Brush RellenoFuente, Pen Lapiz, int dato, Brush encuentro) { int x = 100; int y = 75; if (Raiz == null) { return; } //Posicion de todos los nodos. Raiz.PocisionNodo(ref x, y); //Dibuyja los enlaces entre los nodos Raiz.DubujarRamas(grafo, Lapiz); //Dibujar todos los nodos Raiz.DibujarNodo(grafo, fuente, Relleno, RellenoFuente, Lapiz, dato, encuentro); }
//Dinuja el nodo en la posicion espeficicada public void DibujarNodo(Graphics grafo, Font fuente, Brush Relleno, Brush RellenoFuente, Pen Lapiz, int dato, Brush encuentro) { //dibuja el contorno del nodo Rectangle rect = new Rectangle( (int)(CoordenadaX - Radio / 2), (int)(CoordenadaY - Radio / 2), Radio, Radio); if (valor == dato) { grafo.FillEllipse(encuentro, rect); } else { grafo.FillEllipse(encuentro, rect); grafo.FillEllipse(Relleno, rect); } grafo.DrawEllipse(Lapiz, rect); //dibuja el valor del nodo StringFormat formato = new StringFormat(); formato.Alignment = StringAlignment.Center; formato.LineAlignment = StringAlignment.Center; grafo.DrawString(valor.ToString(), fuente, Brushes.Black, CoordenadaX, CoordenadaY, formato); //Dibuja los nodos hijos derechos e izquierdos if (NodoIzquierdo != null) { NodoIzquierdo.DibujarNodo(grafo, fuente, Brushes.YellowGreen, RellenoFuente, Lapiz, dato, encuentro); } if (NodoDerecho != null) { NodoDerecho.DibujarNodo(grafo, fuente, Brushes.Yellow, RellenoFuente, Lapiz, dato, encuentro); } }