Exemplo n.º 1
0
 public void Eliminar(int x, ref NodoArbol t)
 {
     if (t != null)
     {
         if (x < t.info)
         {
             Eliminar(x, ref t.Izquierdo);
         }
         else
         {
             if (x > t.info)
             {
                 Eliminar(x, ref t.Derecho);
             }
             else
             {
                 NodoArbol NodoEliminar = t;
                 if (NodoEliminar.Derecho == null)
                 {
                     t = NodoEliminar.Izquierdo;
                 }
                 else
                 {
                     if (NodoEliminar.Izquierdo == null)
                     {
                         t = NodoEliminar.Derecho;
                     }
                     else
                     {
                         if ((Alturas(t.Izquierdo) - Alturas(t.Derecho)) > 0)
                         {
                             NodoArbol AuxiliarNodo = null;
                             NodoArbol Auxiliar     = t.Izquierdo;
                             bool      Bandera      = false;
                             while (Auxiliar.Derecho != null)
                             {
                                 AuxiliarNodo = Auxiliar;
                                 Auxiliar     = Auxiliar.Derecho;
                                 Bandera      = true;
                             }
                             t.info       = Auxiliar.info;
                             NodoEliminar = Auxiliar;
                             if (Bandera == true)
                             {
                                 AuxiliarNodo.Derecho = Auxiliar.Izquierdo;
                             }
                             else
                             {
                                 t.Izquierdo = Auxiliar.Izquierdo;
                             }
                         }
                         else
                         {
                             if ((Alturas(t.Derecho) - Alturas(t.Izquierdo)) > 0)
                             {
                                 NodoArbol AuxiliarNodo = null;
                                 NodoArbol Auxiliar     = t.Derecho;
                                 bool      Bandera      = false;
                                 while (Auxiliar.Izquierdo != null)
                                 {
                                     AuxiliarNodo = Auxiliar;
                                     Auxiliar     = Auxiliar.Izquierdo;
                                     Bandera      = true;
                                 }
                                 t.info       = Auxiliar.info;
                                 NodoEliminar = Auxiliar;
                                 if (Bandera == true)
                                 {
                                     AuxiliarNodo.Izquierdo = Auxiliar.Derecho;
                                 }
                                 else
                                 {
                                     t.Derecho = Auxiliar.Derecho;
                                 }
                             }
                             else
                             {
                                 if (Alturas(t.Derecho) - Alturas(t.Izquierdo) == 0)
                                 {
                                     NodoArbol AuxiliarNodo = null;
                                     NodoArbol Auxiliar     = t.Izquierdo;
                                     bool      Bandera      = false;
                                     while (Auxiliar.Derecho != null)
                                     {
                                         AuxiliarNodo = Auxiliar;
                                         Auxiliar     = Auxiliar.Derecho;
                                         Bandera      = true;
                                     }
                                     t.info       = Auxiliar.info;
                                     NodoEliminar = Auxiliar;
                                     if (Bandera == true)
                                     {
                                         AuxiliarNodo.Derecho = Auxiliar.Izquierdo;
                                     }
                                     else
                                     {
                                         t.Izquierdo = Auxiliar.Izquierdo;
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     else
     {
         MessageBox.Show("Nodo NO Existente en el Árbol", "Error de Eliminación");
     }
 }
Exemplo n.º 2
0
 private static int Alturas(NodoArbol t)
 {
     return(t == null ? -1 : t.altura);
 }
Exemplo n.º 3
0
 public ArbolBinario(NodoArbol nueva_raiz)
 {
     Raiz = nueva_raiz;
 }
Exemplo n.º 4
0
        public NodoArbol RaizArbol()
        {
            NodoArbol t = new NodoArbol();

            return(Raiz);
        }
Exemplo n.º 5
0
 public ArbolBinario()
 {
     aux = new NodoArbol();
 }