コード例 #1
0
        public float caudalMinimo(float caudal)
        {
            ArbolGeneral <float>         aux;
            Cola <ArbolGeneral <float> > c = new Cola <ArbolGeneral <float> >();
            float cMinimo = caudal;

            arbol.setDatoRaiz(caudal);
            c.encolar(arbol);
            while (!c.esVacia())
            {
                aux = c.desencolar();
                if (!aux.esHoja())
                {
                    float caudalHijos = aux.getDatoRaiz() / aux.getHijos().Count;
                    if (caudalHijos < cMinimo)
                    {
                        cMinimo = caudalHijos;
                    }
                    foreach (var hijo in aux.getHijos())
                    {
                        hijo.setDatoRaiz(caudalHijos);
                        c.encolar(hijo);
                    }
                }
            }
            return(cMinimo);
        }
コード例 #2
0
        //Ancho
        public int ancho()
        {
            if (this.esHoja())
            {
                return(1);
            }

            Cola <ArbolGeneral <T> > cola = new Cola <ArbolGeneral <T> >();

            cola.encolar(this);             //Encolas la raiz
            int ancho = 0;

            while (!cola.esVacia())             //Mientras la cola no este vacia
            {
                int anchoTemporal = cola.cantidad();
                if (anchoTemporal > ancho)
                {
                    ancho = anchoTemporal;
                }

                while (anchoTemporal-- > 0)
                {
                    ArbolGeneral <T> nodo = cola.desencolar();
                    foreach (ArbolGeneral <T> hijo in nodo.getHijos())
                    {
                        cola.encolar(hijo);
                    }
                }
            }
            return(ancho);
        }
コード例 #3
0
        public int nivel(ArbolGeneral <T> dato)
        {
            Cola <ArbolGeneral <T> > c = new Cola <ArbolGeneral <T> >();
            ArbolGeneral <T>         aux;
            int nivel = 0;

            c.encolar(this);
            c.encolar(null);
            while (!c.esVacia())
            {
                aux = c.desencolar();
                if (aux == dato)
                {
                    return(nivel);
                }
                if (aux == null)
                {
                    nivel++;
                    if (!c.esVacia())
                    {
                        c.encolar(null);
                    }
                }
                else
                {
                    foreach (var hijo in aux.getHijos())
                    {
                        c.encolar(hijo);
                    }
                }
            }
            return(nivel);
        }
コード例 #4
0
        public void porNiveles()
        {
            Cola <ArbolGeneral <T> > c = new Cola <ArbolGeneral <T> >();
            ArbolGeneral <T>         aux;

            c.encolar(this);
            while (!c.esVacia())
            {
                aux = c.desencolar();
                Console.Write(aux.getDatoRaiz() + " ");
                foreach (var hijo in aux.getHijos())
                {
                    c.encolar(hijo);
                }
            }
        }
コード例 #5
0
ファイル: Main.cs プロジェクト: ramircar2020/MDP1
        public static void RunTP1()
        {
            Cola cola = new Cola();
            Pila pila = new Pila();

            llenarAlumnos(cola);
            llenarAlumnos(pila);
            ColeccionMultiple multiple = new ColeccionMultiple(pila, cola);

            informar(multiple); //informa cola y pila

            for (int i = 0; i < pila.pila.Count; i++)
            {
                Console.WriteLine("\t" + ((Alumno)(pila.pila[i])).getLegajo());
            }
            Console.ReadKey();
        }
コード例 #6
0
        public void porNiveles()
        {
            Cola <ArbolGeneral <T> > cola = new Cola <ArbolGeneral <T> >();

            cola.encolar(this);
            while (!cola.esVacia())
            {
                ArbolGeneral <T> nodo = cola.desencolar();
                Console.Write(nodo.getDatoRaiz() + " ");
                if (nodo.getHijos().Count != 0)
                {
                    foreach (ArbolGeneral <T> hijo in nodo.getHijos())
                    {
                        cola.encolar(hijo);
                    }
                }
            }
        }
コード例 #7
0
        public double quadTree(double pixeles)
        {
            Cola <ArbolGeneral <string> > c = new Cola <ArbolGeneral <string> >();
            ArbolGeneral <string>         aux;
            double auxMath = 0;
            double p       = 0;
            int    nivel   = 0;

            c.encolar(arbol);
            c.encolar(null);
            while (!c.esVacia())
            {
                aux = c.desencolar();
                if (aux == null)
                {
                    nivel++;
                    auxMath = pixeles / (Math.Pow(4, nivel));
                    Console.WriteLine(auxMath);
                    if (!c.esVacia())
                    {
                        c.encolar(null);
                    }
                }
                else
                {
                    if (aux.esHoja() && aux.getDatoRaiz() == "negro")
                    {
                        p += auxMath;
                    }
                    foreach (var hijo in aux.getHijos())
                    {
                        c.encolar(hijo);
                    }
                }
            }
            return(p);
        }
コード例 #8
0
        public int ancho()
        {
            Cola <ArbolGeneral <T> > c = new Cola <ArbolGeneral <T> >(); //Instanciamos la cola
            ArbolGeneral <T>         aux;                                //Declaramos un arbol auxiliar
            int nodos = 0;                                               //Contador de nodos
            int ancho = 0;                                               //Ancho del nivel

            c.encolar(this);                                             //Encolamos el propio arbol
            c.encolar(null);                                             //Encolamos el separador
            while (!c.esVacia())                                         //Mientras la cola tenga elementos
            {
                aux = c.desencolar();                                    //Desencolamos el arbol aux
                if (aux == null)                                         //Si es un separador...
                {
                    if (nodos > ancho)                                   //Comparamos si la cantidad de nodos es mayor al ancho actual
                    {
                        ancho = nodos;                                   //Nos quedamos con el mayor
                    }

                    nodos = 0;                                  //Reseteamos el contador de nodos

                    if (!c.esVacia())                           //Si la cola todavia tiene elementos...
                    {
                        c.encolar(null);                        //Encolamos el separador
                    }
                }
                else                                     //Si no es un separador...
                {
                    nodos++;                             //Aumentamos el contador de nodos
                    foreach (var hijo in aux.getHijos()) //Recorremos los hijos restantes
                    {
                        c.encolar(hijo);                 //Encolamos los hijos
                    }
                }
            }
            return(ancho);              //Retornamos el ancho de cada nivel
        }
コード例 #9
0
 public ColeccionMultiple(Pila p, Cola c)
 {
     this.pila = p;
     this.cola = c;
 }