public void DibujarArbol(Graphics grafo, Font fuente, Brush Relleno, Brush RellenoFuente, Pen Lapiz, Brush encuentro) { int x = 250; int y = 75; if (Raiz == null) { return; } Raiz.PosicionNodo(ref x, y); Raiz.DibujarRamas(grafo, Lapiz); Raiz.DibujarNodo(grafo, fuente, Relleno, RellenoFuente, Lapiz, encuentro); }
//***************************************************************************** // ******** Funciones para el dibujo del Árbol Binario en el Formulario ******* //***************************************************************************** //Funcion para obtener la suma // Función que dibuja el Árbol Binario public void DibujarArbol(Graphics grafo, Font fuente, Brush Relleno, Brush RellenoFuente, Pen Lapiz, Brush encuentro, int i, int m, int max, int min) { int x = 400; // Posiciones de la raíz del árbol int y = 75; if (Raiz == null) { return; } Raiz.PosicionNodo(ref x, y); //Posición de cada nodo Raiz.DibujarRamas(grafo, Lapiz); //Dibuja los Enlaces entre nodos //Dibuja todos los Nodos Raiz.DibujarNodo(grafo, fuente, Relleno, RellenoFuente, Lapiz, encuentro, i, m, max, min); }
private int CoordenadaY; //Variable de posicion Y public void PosicionNodo(ref int xmin, int ymin) { int aux1, aux2; CoordenadaY = (int)(ymin + Radio / 2); if (Izquierda != null) { Izquierda.PosicionNodo(ref xmin, ymin + Radio + DistanciaV); } if ((Izquierda != null) && (Derecha != null)) { xmin += DistanciaH; } if (Derecha != null) { Derecha.PosicionNodo(ref xmin, ymin + Radio + DistanciaV); } if (Izquierda != null && Derecha != null) { CoordenadaX = (int)((Izquierda.CoordenadaX + Derecha.CoordenadaX) / 2); } else if (Izquierda != null) { aux1 = Izquierda.CoordenadaX; Izquierda.CoordenadaX = CoordenadaX - 80; CoordenadaX = aux1; } else if (Derecha != null) { aux2 = Derecha.CoordenadaX; Derecha.CoordenadaX = CoordenadaX + 80; CoordenadaX = aux2; } else { CoordenadaX = (int)(xmin + Radio / 2); xmin += Radio; } }
private int CoordenadaY; // variable para manejar posición Eje Y //Función para encontrar la posición donde se creará (dibujará) el nodo public void PosicionNodo(ref int xmin, int ymin) { int aux1, aux2; CoordenadaY = (int)(ymin + Radio / 2); //obtiene la posición del Sub-Arbol izquierdo. if (Izquierdo != null) { Izquierdo.PosicionNodo(ref xmin, ymin + Radio + DistanciaV); } if ((Izquierdo != null) && (Derecho != null)) { xmin += DistanciaH; } //Si existe el nodo derecho y el nodo izquierdo deja un espacio entre ellos if (Derecho != null) { Derecho.PosicionNodo(ref xmin, ymin + Radio + DistanciaV); } if (Izquierdo != null && Derecho != null) { CoordenadaX = (int)((Izquierdo.CoordenadaX + Derecho.CoordenadaX) / 2); } else if (Izquierdo != null) { aux1 = Izquierdo.CoordenadaX; Izquierdo.CoordenadaX = CoordenadaX - 80; CoordenadaX = aux1; } else if (Derecho != null) { aux2 = Derecho.CoordenadaX; //no hay nodo izquierdo, centrar en nodo derecho. Derecho.CoordenadaX = CoordenadaX + 80; CoordenadaX = aux2; } else { CoordenadaX = (int)(xmin + Radio / 2); xmin += Radio; } }