public void porNiveles() { // Creamos la cola Cola <ArbolGeneral <T> > c = new Cola <ArbolGeneral <T> >(); // Creamos una variable que servirá como auxiliar ArbolGeneral <T> arbolAux; // Incorporamos al árbol actual a la cola c.encolar(this); while (!c.esVacia()) { // Se imprime el valor de salida de la cola arbolAux = c.desencolar(); Console.Write(arbolAux.getDatoRaiz() + " "); // Si no es hoja, se agregan todos los hijos del árbol actual a la cola if (!arbolAux.esHoja()) { foreach (var hijo in arbolAux.getHijos()) { c.encolar(hijo); } } } }
public void porNivel(int nivel) { if (nivel % 2 == 0) { Console.ForegroundColor = ConsoleColor.Red; } else { Console.ForegroundColor = ConsoleColor.Blue; } if (nivel > Game.getEstado().altura()) { Console.ResetColor(); Console.WriteLine("Profundidad inválida.\n" + ""); return; } Cola <ArbolGeneral <T> > c = new Cola <ArbolGeneral <T> >(); ArbolGeneral <T> arbolAux; int nivelactual = 0; c.encolar(this); c.encolar(null); while (!c.esVacia()) { arbolAux = c.desencolar(); if (arbolAux == null) { nivelactual += 1; c.encolar(null); if (nivelactual > nivel) { Console.WriteLine(""); break; } } else { if (!this.esHoja()) { foreach (var hijo in arbolAux.getHijos()) { c.encolar(hijo); } } if (nivelactual == nivel) { Console.Write("({0},{1})", arbolAux.getDatoRaiz(), arbolAux.getFuncionHeuristicaRaiz()); } if (nivelactual > nivel) { Console.WriteLine(""); return; } } } Console.ResetColor(); }
public void niveles(int a, int b) { Cola <ArbolGeneral <T> > cola = new Cola <ArbolGeneral <T> >(); ArbolGeneral <T> temp; int contNivel = 0; cola.encolar(this); cola.encolar(null); while (!cola.esVacia()) { temp = cola.desencolar(); if (temp != null) { if (contNivel >= a && contNivel <= b) { Console.Write(temp.getDatoRaiz() + " "); } foreach (var hijo in temp.getHijos()) { cola.encolar(hijo); } } else { contNivel++; if (!cola.esVacia()) { cola.encolar(null); } } } }
public int ancho() { Cola <ArbolGeneral <T> > c = new Cola <ArbolGeneral <T> >(); ArbolGeneral <T> arbolAux; // Inicializamos las variables auxiliares int cantArbol = 0, anchoMax = 1; // Encolamos el árbol desde donde se invoca la función y el separador de niveles 'null' c.encolar(this); c.encolar(null); // Si el árbol es vacío, se retorna 0 if (this.esVacio()) { return(0); } // Si el árbol es hoja, se retorna 1 if (this.esHoja()) { return(1); } while (!c.esVacia()) { arbolAux = c.desencolar(); if (arbolAux == null) //Si el árbol desencolado es nulo... { if (!c.esVacia()) // Se encola mientras haya más elementos en la lista { c.encolar(null); } if (cantArbol > anchoMax) { anchoMax = cantArbol; } cantArbol = 0; } else { cantArbol++; if (!arbolAux.esHoja()) // Si no es hoja, se encolan todos los hijos del árbol { foreach (var hijo in arbolAux.getHijos()) { c.encolar(hijo); } } } } return(anchoMax); }
public void porniveles() { Cola <ArbolGeneral <T> > cola = new Cola <ArbolGeneral <T> >(); ArbolGeneral <T> temp; cola.encolar(this); if (!this.esVacio()) { while (!cola.esVacia()) { temp = cola.desencolar(); Console.Write(temp.getDatoRaiz() + " "); foreach (var hijo in temp.getHijos()) { cola.encolar(hijo); } } } }
public int ancho() { Cola <ArbolGeneral <T> > cola = new Cola <ArbolGeneral <T> >(); ArbolGeneral <T> temp; //int contNivel=0; int anchoNivel = 0; int anchura = 0; cola.encolar(this); cola.encolar(null); while (!cola.esVacia()) { temp = cola.desencolar(); if (temp != null) { anchoNivel++; foreach (var hijo in temp.getHijos()) { cola.encolar(hijo); } } else { //contNivel++; if (anchoNivel > anchura) { anchura = anchoNivel; } anchoNivel = 0; if (!cola.esVacia()) { cola.encolar(null); } } } return(anchura); }
public int nivel(T dato) { Cola <ArbolGeneral <T> > cola = new Cola <ArbolGeneral <T> >(); ArbolGeneral <T> temp; int contNivel = 0; //string data= dato.ToString(); cola.encolar(this); cola.encolar(null); while (!cola.esVacia()) { temp = cola.desencolar(); if (temp != null) { //string tempDato= temp.getDatoRaiz().ToString(); if (temp.getDatoRaiz().Equals(dato)) { return(contNivel); } foreach (var hijo in temp.getHijos()) { cola.encolar(hijo); } } else { contNivel++; if (!cola.esVacia()) { cola.encolar(null); } } } return(-1); }