Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static int cantHojas = 0;
- public int contarHojas() {
- if (!this.esVacio()){
- if (!this.esHoja()){
- if (!this.getHijoIzquierdo().esVacio()){
- this.getHijoIzquierdo().contarHojas();
- }
- if (!this.getHijoDerecho().esVacio()){
- this.getHijoDerecho().contarHojas();
- }
- }
- else cantHojas++;
- }
- return cantHojas;
- }
- public ArbolBinario<T> espejo(){
- ArbolBinario<T> ab = new ArbolBinario<T>(this.getDatoRaiz());
- if (!this.esVacio()){
- if (!this.esHoja()){
- ArbolBinario <T> izq = this.getHijoDerecho().espejo();
- if (izq.getDatoRaiz() != null) ab.agregarHijoIzquierdo(izq);
- ArbolBinario <T> der = this.getHijoIzquierdo().espejo();
- if (der.getDatoRaiz() != null) ab.agregarHijoDerecho(der);
- }
- }
- return ab;
- }
- public void entreNiveles(int n, int m){
- // Inicializo un arbol auxiliar en null
- ArbolBinario<T> aux = null;
- // Instancio una cola generica que almacena punteros a arboles binarios genericos
- ColaGenerica<ArbolBinario<T>> cola = new ColaGenerica<ArbolBinario<T>>();
- // Encolo el puntero de la raiz y encolo el valor null como separacion
- cola.encolar(this); // Almacena null
- cola.encolar(null);
- int nivel = 0;
- // Mientras haya elementos en la cola y no haya analizado los niveles pedidos se revisan los nodos
- while (!cola.esVacia() && nivel<= m){
- // Desencolo y pongo el puntero en el arbol auxiliar
- aux = cola.desencolar();
- // Si no estoy en una separacion
- if (aux != null){
- // Imprime el dato del puntero a la raiz del subarbol auxiliar si esta en el rango de niveles
- if (nivel >= n && nivel <= m){
- System.out.println(aux.getDatoRaiz());
- }
- // Si el nodo del arbol auxiliar tiene hijo izquierdo lo encola
- if (!aux.getHijoIzquierdo().esVacio()){
- cola.encolar(aux.getHijoIzquierdo());
- }
- // Si el nodo del arbol auxiliar tiene hijo derecho lo encola
- if (!aux.getHijoDerecho().esVacio()){
- cola.encolar(aux.getHijoDerecho());
- }
- }
- else if (!cola.esVacia()){ // Estoy en un separador null pero la cola no esta vacia
- nivel++;
- cola.encolar(null); // Pongo separacion
- }
- } // Fin del while
- } // Fin del metodo
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement