Advertisement
Guest User

TP3E2

a guest
Apr 21st, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.27 KB | None | 0 0
  1. private static int cantHojas = 0;
  2. public int contarHojas() {
  3.        
  4.         if (!this.esVacio()){
  5.            
  6.             if (!this.esHoja()){
  7.  
  8.                 if (!this.getHijoIzquierdo().esVacio()){
  9.                     this.getHijoIzquierdo().contarHojas();
  10.                 }
  11.                 if (!this.getHijoDerecho().esVacio()){
  12.                     this.getHijoDerecho().contarHojas();
  13.                 }
  14.             }
  15.             else cantHojas++;
  16.            
  17.         }
  18.  
  19.         return cantHojas;
  20.     }
  21.    
  22.     public ArbolBinario<T> espejo(){
  23.        
  24.         ArbolBinario<T> ab = new ArbolBinario<T>(this.getDatoRaiz());
  25.        
  26.         if (!this.esVacio()){
  27.             if (!this.esHoja()){
  28.                
  29.                 ArbolBinario <T> izq = this.getHijoDerecho().espejo();
  30.                 if (izq.getDatoRaiz() != null) ab.agregarHijoIzquierdo(izq);
  31.  
  32.                 ArbolBinario <T> der = this.getHijoIzquierdo().espejo();
  33.                 if (der.getDatoRaiz() != null) ab.agregarHijoDerecho(der);
  34.             }
  35.         }
  36.         return ab;
  37.     }
  38.    
  39.     public void entreNiveles(int n, int m){
  40.        
  41.         // Inicializo un arbol auxiliar en null
  42.         ArbolBinario<T> aux = null;
  43.                
  44.         // Instancio una cola generica que almacena punteros a arboles binarios genericos
  45.         ColaGenerica<ArbolBinario<T>> cola = new ColaGenerica<ArbolBinario<T>>();
  46.    
  47.         // Encolo el puntero de la raiz y encolo el valor null como separacion
  48.         cola.encolar(this); // Almacena null
  49.         cola.encolar(null);
  50.        
  51.         int nivel = 0;
  52.        
  53.         // Mientras haya elementos en la cola y no haya analizado los niveles pedidos se revisan los nodos
  54.         while (!cola.esVacia() && nivel<= m){
  55.            
  56.             // Desencolo y pongo el puntero en el arbol auxiliar
  57.             aux = cola.desencolar();
  58.            
  59.             // Si no estoy en una separacion
  60.             if (aux != null){          
  61.                
  62.                 // Imprime el dato del puntero a la raiz del subarbol auxiliar si esta en el rango de niveles
  63.                 if (nivel >= n && nivel <= m){
  64.                     System.out.println(aux.getDatoRaiz());
  65.                 }
  66.                
  67.                 // Si el nodo del arbol auxiliar tiene hijo izquierdo lo encola
  68.                 if (!aux.getHijoIzquierdo().esVacio()){
  69.                     cola.encolar(aux.getHijoIzquierdo());
  70.                 }
  71.                
  72.                 // Si el nodo del arbol auxiliar tiene hijo derecho lo encola
  73.                 if (!aux.getHijoDerecho().esVacio()){
  74.                     cola.encolar(aux.getHijoDerecho());
  75.                 }
  76.             }
  77.             else if (!cola.esVacia()){ // Estoy en un separador null pero la cola no esta vacia
  78.                 nivel++;
  79.                 cola.encolar(null); // Pongo separacion
  80.             }
  81.         } // Fin del while
  82.     } // Fin del metodo
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement