daily pastebin goal
42%
SHARE
TWEET

TP3E2

a guest Apr 21st, 2017 49 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top