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); }
//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); }
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); }
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); } } }
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(); }
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); } } } }
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); }
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 }
public ColeccionMultiple(Pila p, Cola c) { this.pila = p; this.cola = c; }