public void recorridoPorNiveles() { Cola <ArbolBinario <T> > c = new Cola <ArbolBinario <T> >(); ArbolBinario <T> arbolAux; //encolamos Arbol c.encolar(this); while (c.esVacio()) { //desencolamos arbol arbolAux = c.desencolar(); //imprimimos datos de la raiz del arbol Console.Write(arbolAux.getDatoRaiz() + " "); //si tiene hijo izquierdo if (arbolAux.getHijoIzquierdo().esVacio()) { ; } //lo encolamos c.encolar(arbolAux.getHijoIzquierdo()); //si tiene hijo derecho if (!arbolAux.getHijoDerecho().esVacio()) { ; } //lo encolamos c.encolar(arbolAux.getHijoDerecho()); } }
public void recorridoEntreNiveles(int n, int m) { if (!this.esVacio()) { Cola <ArbolBinario <T> > c = new Cola <ArbolBinario <T> >(); //variable auxiliar ArbolBinario <T> arbolAux; //contador int contNivel = 0; //encolamos arbol c.encolar(this); //encolamos separador de niveles c.encolar(null); while (!c.esVacia()) { //desencolamos arbol arbolAux = c.desencolar(); if (arbolAux == null) { if (contNivel >= n && contNivel <= m) { Console.Write(arbolAux.getDatoRaiz() + " "); } } //si tiene hhijo izquierdo if (!arbolAux.getHijoIzquierdo().esVacio()) { //lo encolamos c.encolar(arbolAux.getHijoIzquierdo()); //si tiene hijo derecho if (!arbolAux.getHijoDerecho().esVacio()) { ; } //lo encolamos c.encolar(arbolAux.getHijoDerecho()); } else { contNivel++; if (!c.esVacio()) { ; } c.encolar(null); } } } }