示例#1
0
        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);
        }
示例#2
0
        //*****************************************************************************
        // ******** 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);
        }
示例#3
0
        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;
            }
        }
示例#4
0
        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;
            }
        }