Пример #1
0
        // Función para Colorear los nodos
        public void colorear(Graphics grafo, Font fuente, Brush Relleno, Brush RellenoFuente, Pen Lapiz, NodoArbol Raiz, bool post, bool inor, bool preor)
        {
            Brush entorno = Brushes.Red;

            if (inor == true)
            {
                if (Raiz != null)
                {
                    colorear(grafo, fuente, Relleno, RellenoFuente, Lapiz, Raiz.Izquierdo, post, inor, preor);
                    Raiz.colorear(grafo, fuente, entorno, RellenoFuente, Lapiz);
                    Thread.Sleep(1000);
                    // pausar la ejecución 1000 milisegundos
                    Raiz.colorear(grafo, fuente, Relleno, RellenoFuente, Lapiz);
                    colorear(grafo, fuente, Relleno, RellenoFuente, Lapiz, Raiz.Derecho, post, inor, preor);
                }
            }
            else
            if (preor == true)
            {
                if (Raiz != null)
                {
                    Raiz.colorear(grafo, fuente, entorno, RellenoFuente, Lapiz);
                    Thread.Sleep(1000);// pausar la ejecución 1000 milisegundos
                    Raiz.colorear(grafo, fuente, Relleno, RellenoFuente, Lapiz);
                    colorear(grafo, fuente, Relleno, RellenoFuente, Lapiz, Raiz.Izquierdo, post, inor, preor);
                    colorear(grafo, fuente, Relleno, RellenoFuente, Lapiz, Raiz.Derecho, post, inor, preor);
                }
            }
            else
            if (post == true)
            {
                if (Raiz != null)
                {
                    colorear(grafo, fuente, Relleno, RellenoFuente, Lapiz, Raiz.Izquierdo, post, inor, preor);
                    colorear(grafo, fuente, Relleno, RellenoFuente, Lapiz, Raiz.Derecho, post, inor, preor);
                    Raiz.colorear(grafo, fuente, entorno, RellenoFuente, Lapiz);
                    Thread.Sleep(1000); // pausar la ejecución 1000 milisegundos
                    Raiz.colorear(grafo, fuente, Relleno, RellenoFuente, Lapiz);
                }
            }
        }
Пример #2
0
 public ArbolBinario(NodoArbol nueva_raiz)
 {
     Raiz = nueva_raiz;
 }
Пример #3
0
 public ArbolBinario()
 {
     aux = new NodoArbol();
 }
Пример #4
0
 //Función para eliminar un nodo de un árbol binario
 public void Eliminar(int x, ref NodoArbol t)
 {
     if (t != null)      //si la raíz es distinta de null
     {
         if (x < t.info) //si el valor a eliminar es menor que la raíz
         {
             Eliminar(x, ref t.Izquierdo);
         }
         else
         {
             if (x > t.info)//si el valor a eliminar es mayor que la raíz
             {
                 Eliminar(x, ref t.Derecho);
             }
             else
             {
                 NodoArbol NodoEliminar = t;   //se ubica el nodo a eliminar
                 //se verifica si tiene hijo derecho
                 if (NodoEliminar.Derecho == null)
                 {
                     t = NodoEliminar.Izquierdo;
                 }
                 else
                 {
                     //se verifica si tiene hijo izq
                     if (NodoEliminar.Izquierdo == null)
                     {
                         t = NodoEliminar.Derecho;
                     }
                     else
                     {
                         if (Alturas(t.Izquierdo) - Alturas(t.Derecho) > 0)//Para verificar que hijo pasa a ser nueva raíz del subárbol
                         {
                             NodoArbol AuxiliarNodo = null;
                             NodoArbol Auxiliar     = t.Izquierdo;
                             bool      bandera      = false;
                             while (Auxiliar.Derecho != null)
                             {
                                 AuxiliarNodo = Auxiliar; Auxiliar = Auxiliar.Derecho;
                                 bandera      = true;
                             }// se crea nodo temporal
                             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 el Arbol", "Error de eliminación");
     }
 }  //Final de la función elimina
Пример #5
0
 public void encontrado(NodoArbol t)
 {
     Rectangle rec = new Rectangle(t.CoordenadaX, t.CoordenadaY, 40, 40);
 }
Пример #6
0
 //Verificar altura del árbol
 private static int Alturas(NodoArbol t)
 {
     return(t == null? -1 : t.altura);
 }