//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 static void Main(string[] args) { //Ejemplo de arbol general. ArbolGeneral <int> arbol = new ArbolGeneral <int>(1); ArbolGeneral <int> primerHijo = new ArbolGeneral <int>(2); ArbolGeneral <int> segundoHijo = new ArbolGeneral <int>(3); ArbolGeneral <int> tercerHijo = new ArbolGeneral <int>(4); ArbolGeneral <int> cuartoHijo = new ArbolGeneral <int>(11); ArbolGeneral <int> hijoDeCuarto = new ArbolGeneral <int>(88); ArbolGeneral <int> nietoDeCuarto = new ArbolGeneral <int>(100); arbol.agregarHijo(primerHijo); arbol.agregarHijo(segundoHijo); arbol.agregarHijo(tercerHijo); arbol.agregarHijo(cuartoHijo); primerHijo.agregarHijo(new ArbolGeneral <int>(5)); primerHijo.agregarHijo(new ArbolGeneral <int>(6)); segundoHijo.agregarHijo(new ArbolGeneral <int>(7)); tercerHijo.agregarHijo(new ArbolGeneral <int>(8)); cuartoHijo.agregarHijo(hijoDeCuarto); hijoDeCuarto.agregarHijo(nietoDeCuarto); Console.Write("Preorden: "); arbol.preorden(); Console.WriteLine(); Console.Write("Inorden: "); arbol.inorden(); Console.WriteLine(); Console.Write("Postorden: "); arbol.postorden(); Console.WriteLine(); Console.Write("Por Niveles: "); arbol.porNiveles(); Console.WriteLine(); Console.WriteLine("======================================================================================="); Console.WriteLine("La cantidad de hijos del nodo raiz es de: {0}", arbol.getHijos().Count); Console.WriteLine("La altura del arbol,sin contar la raiz,es de: {0}", arbol.altura()); int dato = 7; Console.WriteLine("El nivel del dato {0} es: {1}", dato, arbol.nivel(dato)); Console.WriteLine("El ancho del arbol es: {0}", arbol.ancho()); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); }
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); } } } }
static void Main(string[] args) { ArbolGeneral <string> arbolD = new ArbolGeneral <string>("blanco"); ArbolGeneral <string> arbolA = new ArbolGeneral <string>("gris"); ArbolGeneral <string> arbolV = new ArbolGeneral <string>("blanco"); ArbolGeneral <string> arbolI = new ArbolGeneral <string>("negro"); ArbolGeneral <string> arbolB = new ArbolGeneral <string>("negro"); ArbolGeneral <string> arbolJ = new ArbolGeneral <string>("negro"); ArbolGeneral <string> arbolU = new ArbolGeneral <string>("blanco"); ArbolGeneral <string> arbolK = new ArbolGeneral <string>("blanco"); ArbolGeneral <string> arbolX = new ArbolGeneral <string>("negro"); arbolD.agregarHijo(arbolA); arbolD.agregarHijo(arbolV); arbolD.agregarHijo(arbolI); arbolD.agregarHijo(arbolB); arbolV.agregarHijo(arbolJ); arbolV.agregarHijo(arbolU); arbolV.agregarHijo(arbolK); arbolV.agregarHijo(arbolX); //RedAgua r = new RedAgua(arbolD); QuadTree q = new QuadTree(arbolD); Console.Write("Inorden: "); arbolD.inOrden(); Console.WriteLine(); Console.Write("preOrden: "); arbolD.preOrden(); Console.WriteLine(); Console.Write("postOrden: "); arbolD.postOrden(); Console.WriteLine(); Console.Write("porNiveles: "); arbolD.porNiveles(); Console.WriteLine(); Console.Write("Altura: " + arbolD.altura()); Console.WriteLine(); Console.Write("Ancho: " + arbolD.ancho()); Console.WriteLine(); Console.Write("Nivel: " + (arbolD.nivel(arbolD))); Console.WriteLine(); //Console.Write("Caudal mínimo: "+r.caudalMinimo(1000)); Console.Write("Píxeles: " + q.quadTree(1024)); }
static void Main(string[] args) { ArbolGeneral <int> arbol = new ArbolGeneral <int>(10); ArbolGeneral <int> hijo1 = new ArbolGeneral <int>(20); ArbolGeneral <int> hijo2 = new ArbolGeneral <int>(30); ArbolGeneral <int> hijo3 = new ArbolGeneral <int>(40); arbol.agregarHijo(hijo1); arbol.agregarHijo(hijo2); arbol.agregarHijo(hijo3); for (int i = 1; i < 3; i++) { hijo1.agregarHijo(new ArbolGeneral <int>(i + 20)); hijo2.agregarHijo(new ArbolGeneral <int>(i + 30)); hijo3.agregarHijo(new ArbolGeneral <int>(i + 40)); } Console.WriteLine(arbol.Altura()); arbol.Altura(); Console.ReadKey(true); }
public RedAgua(ArbolGeneral <float> arbol) { this.arbol = arbol; }
public void eliminarHijo(ArbolGeneral <T> hijo) { this.raiz.getHijos().Remove(hijo.getRaiz()); }
public void agregarHijo(ArbolGeneral <T> hijo) { this.raiz.getHijos().Add(hijo.getRaiz()); }
public QuadTree(ArbolGeneral <string> arbol) { this.arbol = arbol; }
public void eliminarHijo(ArbolGeneral <T> hijo) { this.getHijos().Remove(hijo); }
public void agregarHijo(ArbolGeneral <T> hijo) { this.getHijos().Add(hijo); }