Advertisement
LaCaraDeLaVerga

AB + ABnodo

Jun 7th, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.74 KB | None | 0 0
  1. //   NODO
  2. import java.util.ArrayList;
  3.  
  4. public class NodoAB {
  5.     Integer info;
  6.     private NodoAB izq;
  7.     private NodoAB der;
  8.    
  9.     public NodoAB (int info){
  10.         this.info = info;
  11.         izq=der= null;
  12.     }
  13.    
  14.     void agregar(NodoAB n) {
  15.         if(izq==null)
  16.             izq= n;
  17.         else
  18.             if(der==null)
  19.                 der= n;
  20.             else
  21.                 izq.agregar(n);
  22.     }
  23.    
  24.    
  25.     public void eliminar(NodoAB padre, String izqDer, int info){
  26.         if (this.info == info){
  27.             if (esHoja()){
  28.                 if (izqDer == "izq"){   //vine por izquierda
  29.                     padre.izq = null;
  30.                 }else{
  31.                     padre.der = null;
  32.                 }
  33.             }else{  // por hipotesis tengo derecha o izquieda
  34.                 if (izq != null ){  //tomo el maximo de la izquierda
  35.                     this.info = izq.maximo();
  36.                     izq.eliminar(this, "izq", this.info);
  37.                 }else{
  38.                     this.info = der.minimo();
  39.                     der.eliminar(this, "der", this.info);
  40.                 }
  41.             }
  42.         }else{  //iteracion
  43.             if (izq != null ) izq.eliminar(this,"izq", info);
  44.             if (der != null) der.eliminar(this,"der", info);
  45.         }
  46.     }
  47.    
  48.    
  49.     private Integer minimo() {
  50.         int min;
  51.         if(this.izq==null)
  52.             min= this.info;
  53.         else
  54.             min= this.izq.minimo();
  55.         return min;
  56.     }
  57.    
  58.  
  59.     private Integer maximo() {
  60.         int max;
  61.         if(this.der==null)
  62.             max= this.info;
  63.         else
  64.             max= this.der.maximo();
  65.         return max;
  66.     }
  67.    
  68.  
  69.     boolean balanceado(){
  70.         boolean ret;
  71.         ret= Math.abs(altura(izq) - altura(der)) <=1;
  72.    
  73.         if (izq!=null)
  74.             ret= ret && izq.balanceado();
  75.         if (der!=null)
  76.             ret= ret && der.balanceado();
  77.        
  78.         return ret;
  79.     }
  80.  
  81.  
  82.     public int altura(NodoAB n){ //caso base= null y arbol de un nodo
  83.         if(n==null)
  84.             return 0;
  85.         else
  86.             return 1 +  Math.max( altura(n.der), altura(n.izq) );
  87.     }
  88.  
  89.    
  90.     int cantNodos(){
  91.         int ret= 1;
  92.        
  93.         if (izq!=null)
  94.             ret= ret + izq.cantNodos();
  95.         if (der!=null)
  96.             ret= ret + der.cantNodos();
  97.         return ret;
  98.     }
  99.    
  100.    
  101.     public String toString(){
  102.         String ret= info.toString();
  103.         if(izq!=null)
  104.             ret+= " " + izq.toString();
  105.         if(der!=null)
  106.             ret+= " " + der.toString();
  107.         return ret;
  108.     }
  109.    
  110.  
  111.     public void imprimirPreOrden() {    // PREORDEN=    Actual + Pre(izq) + Pre(der)
  112.         System.out.println(info + " ");
  113.        
  114.         if(izq!=null)
  115.             izq.imprimirPreOrden();
  116.        
  117.         if(der!=null)
  118.             der.imprimirPreOrden();
  119.     }
  120.    
  121.  
  122.     public void imprimirInOrden() {     //INORDEN=  In(izq) + Actual + In(der)
  123.         if(izq!=null)
  124.             izq.imprimirInOrden();
  125.        
  126.         System.out.println(info + " ");
  127.        
  128.         if(der!=null)
  129.             der.imprimirInOrden();
  130.     }
  131.  
  132.    
  133.     public void toListPreOrden(ArrayList<Integer> lista) {  // PREORDEN=    Actual + Pre(izq) + Pre(der)
  134.         lista.add(info);
  135.        
  136.         if(izq!=null)
  137.             izq.toListInOrden(lista);
  138.        
  139.         if(der!=null)
  140.             der.toListInOrden(lista);
  141.     }
  142.  
  143.    
  144.     public void toListInOrden(ArrayList<Integer> lista) {       //INORDEN=  In(izq) + Actual + In(der)
  145.         if(izq!=null)
  146.             izq.toListInOrden(lista);
  147.        
  148.         lista.add(info);
  149.        
  150.         if(der!=null)
  151.             der.toListInOrden(lista);
  152.     }
  153.  
  154.     public boolean esHoja() {
  155.         return (izq == null) && (der == null);
  156.     }
  157.  
  158. }
  159. //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  160. //AB
  161.  
  162. public class AB {
  163.    
  164.     ABnodo arbol;
  165.  
  166.    
  167.    
  168. //Métodos
  169.    
  170.  
  171. //Revisa que el nodo raiz no sea null ;
  172. boolean vacio (){
  173.     if (this.arbol==null) {
  174.         return true ;
  175.     }
  176.     return false ;
  177. }  
  178.  
  179.  
  180. void insertar (int nuevo){
  181.     if (this.arbol==null) {
  182.         this.arbol.dato = nuevo;
  183.     }
  184.     else {
  185.         if (this.arbol.izq==null) {
  186.             this.arbol.izq.dato = nuevo ;
  187.         }
  188.         if (this.arbol.der==null) {
  189.             this.arbol.der.dato = nuevo ;
  190.         }
  191.     }
  192. }
  193.  
  194.  
  195. void imprimirInOrden(){
  196.     //System.out.println(this.arbol.dato + "");
  197.     if (this.arbol.izq!=null) {
  198.         System.out.println(this.arbol.dato + this.arbol.izq.dato);
  199.     }
  200.     if (this.arbol.der!=null) {
  201.         System.out.println(this.arbol.der.dato);
  202.     }
  203.    
  204.    
  205. }
  206.    
  207. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement