//Metodo de Eliminar
 static void EliminarNodo(ref NodoT Raiz, int Dato)
 {
     if (Raiz != null)
     {
         if (Dato < Raiz.Informacion)
         {
             EliminarNodo(ref Raiz.NodoIzquierdo, Dato);//Llamada recursiva
         }
         else
         {
             if (Dato > Raiz.Informacion)
             {
                 EliminarNodo(ref Raiz.NodoDerecho, Dato);//recursivo
             }
             else
             {
                 //Si lo Encontro
                 NodoT NodoEliminar = Raiz;
                 if (NodoEliminar.NodoDerecho == null)
                 {
                     Raiz = NodoEliminar.NodoIzquierdo;
                 }
                 else
                 {
                     if (NodoEliminar.NodoIzquierdo == null)
                     {
                         Raiz = NodoEliminar.NodoDerecho;
                     }
                     else
                     {
                         NodoT AuxiliarNodo = null;
                         NodoT Auxiliar     = Raiz.NodoIzquierdo;
                         bool  Bandera      = false;
                         while (Auxiliar.NodoDerecho != null)
                         {
                             AuxiliarNodo = Auxiliar;
                             Auxiliar     = Auxiliar.NodoDerecho;
                             Bandera      = true;
                         }
                         Raiz.Informacion = Auxiliar.Informacion;
                         NodoEliminar     = Auxiliar;
                         if (Bandera == true)
                         {
                             AuxiliarNodo.NodoDerecho = Auxiliar.NodoIzquierdo;
                         }
                         else
                         {
                             Raiz.NodoIzquierdo = Auxiliar.NodoIzquierdo;
                         }
                     }
                 }
             }
         }
     }
     else
     {
         Console.WriteLine("ERROR, EL Nodo no se Encuentra en el Arbol...");
     }
 }
Example #2
0
 //Metodo de recorrido en Post-Orden
 static void RecorridoPostorden(NodoT Raiz)
 {
     if (Raiz != null)
     {
         RecorridoPostorden(Raiz.NodoIzquierdo);
         RecorridoPostorden(Raiz.NodoDerecho);
         Console.Write("{0}, ", Raiz.Informacion);
     }
 }
 //Metodo de recorrido en Post-Orden
 static void RecorridoPostorden(NodoT Raiz)
 {
     if (Raiz != null)
     {
         RecorridoPostorden(Raiz.NodoIzquierdo); //Llamada recursiva
         RecorridoPostorden(Raiz.NodoDerecho);   //Llamada recursiva
         Console.WriteLine("valor {0} ", Raiz.Informacion);
     }
 }
Example #4
0
        //Metodo de Buscar un nodo
        static void BuscarNodo(NodoT Raiz, int Dato)
        {
            if (Dato < Raiz.Informacion)
            {
                //Buscar por el Sub-Arbol izquierdo
                if (Raiz.NodoIzquierdo == null)
                {
                    Console.WriteLine("ERROR, No se encuentra el Contacto...");
                    Console.ReadLine();
                }
                else
                {
                    BuscarNodo(Raiz.NodoIzquierdo, Dato);
                }
            }
            else
            {
                if (Dato > Raiz.Informacion)
                {
                    //Buscar por el Sub-Arbol derecho
                    if (Raiz.NodoDerecho == null)
                    {
                        Console.WriteLine("ERROR, No se encuentra el Contacto...");
                        Console.ReadLine();
                    }
                    else
                    {
                        BuscarNodo(Raiz.NodoDerecho, Dato);
                    }
                }
                else
                {
                    //El nodo se encontro
                    Console.WriteLine("Contacto Localizado en el Arbol...");
                    Console.WriteLine("Datos del contacto:\n\n      Codigo:" + Dato + "\n\nNombre:" + Nombres[Dato] + "\nApellido: " + Apellido[Dato] + "\nTelefono: " + Telefono[Dato] + "\nCorreo: " + Correo[Dato]);

                    Console.ReadLine();
                }
            }
        }
Example #5
0
 //Insertar en un arbol binario
 static void Insertar(NodoT Raiz, int Dato)
 {
     if (Dato < Raiz.Informacion)
     {
         if (Raiz.NodoIzquierdo == null)
         {
             NodoT NuevoNodo = new NodoT();
             NuevoNodo.Informacion = Dato;
             Raiz.NodoIzquierdo    = NuevoNodo;
         }
         else
         {
             //Llamada recursiva
             Insertar(Raiz.NodoIzquierdo, Dato);
         }
     }
     else//Buscar por el lado derecho
     {
         if (Dato > Raiz.Informacion)
         {
             if (Raiz.NodoDerecho == null)
             {
                 NodoT NuevoNodo = new NodoT();
                 NuevoNodo.Informacion = Dato;
                 Raiz.NodoDerecho      = NuevoNodo;
             }
             else
             {
                 //Llamada recursiva por el lado derecho
                 Insertar(Raiz.NodoDerecho, Dato);
             }
         }
         else
         {
             //El Nodo existe en el Arbol
             Console.WriteLine("Contacto Existente, Imposible Insertar...");
             Console.ReadLine();
         }
     }
 }
 static void insertar(NodoT Raiz, int Dato)
 {
     if (Dato < Raiz.Informacion)
     {
         if (Raiz.NodoIzquierdo == null)
         {
             NodoT NuevoNodo = new NodoT();
             NuevoNodo.Informacion = Dato;
             Raiz.NodoIzquierdo    = NuevoNodo;
         }
         else
         {
             insertar(Raiz.NodoIzquierdo, Dato);//Llamada recursiva
         }
     }
     else
     {
         if (Dato > Raiz.Informacion)
         {
             if (Raiz.NodoDerecho == null)
             {
                 NodoT NuevoNodo = new NodoT();
                 NuevoNodo.Informacion = Dato;
                 Raiz.NodoDerecho      = NuevoNodo;
             }
             else
             {
                 insertar(Raiz.NodoDerecho, Dato);
             }
         }
         else
         {
             //El Nodo existe en el Arbol
             Console.WriteLine("Nodo Existente, Imposible Insertar...");
         }
     }
 }
 //Metodo de Buscar un nodo
 static void BuscarNodo(NodoT Raiz, int Dato)
 {
     if (Dato < Raiz.Informacion)
     {
         //Buscar por el Sub-Arbol izquierdo
         if (Raiz.NodoIzquierdo == null)
         {
             Console.WriteLine("ERROR, No se encuentra el Nodo...");
         }
         else
         {
             BuscarNodo(Raiz.NodoIzquierdo, Dato);//Llamada recursiva
         }
     }
     else
     {
         if (Dato > Raiz.Informacion)
         {
             //Buscar por el Sub-Arbol derecho
             if (Raiz.NodoDerecho == null)
             {
                 Console.WriteLine("ERROR, No se encuentra el Nodo...");
             }
             else
             {
                 BuscarNodo(Raiz.NodoDerecho, Dato);//Llamada recursiva
             }
         }
         else
         {
             //El nodo se encontro
             Console.WriteLine("Nodo Localizado en el Arbol...");
             Console.ReadLine();
         }
     }
 }
Example #8
0
        static void Main(string[] args)
        {
            Console.Title = "Administrador de Contactos";


            int   Opcion = 0;
            NodoT Raiz   = null;
            int   Dato;

            do
            {
                Opcion = Menu();
                switch (Opcion)
                {
                case 1:
                    Console.Write("Nuevo contacto>>> ");

                    Dato = aleatorio();
                    Console.WriteLine("Su codigo es: " + Dato);

                    Console.WriteLine("Nombre:");
                    Nombres[Dato] = Console.ReadLine();
                    Console.WriteLine("Apellido:");
                    Apellido[Dato] = Console.ReadLine();
                    Console.WriteLine("Telefono:");
                    Telefono[Dato] = Console.ReadLine();
                    Console.WriteLine("Correo:");
                    Correo[Dato] = Console.ReadLine();

                    if (Raiz == null)
                    {
                        NodoT NuevoNodo = new NodoT();
                        NuevoNodo.Informacion = Dato;
                        Raiz = NuevoNodo;
                    }
                    else
                    {
                        Insertar(Raiz, Dato);
                    }
                    Console.Clear();
                    break;

                //Recorrido en Pre Orden del Arbol
                case 2:
                    RecorridoPreorden(Raiz);
                    Console.WriteLine("Fin del Recorrido,...");
                    Console.ReadLine();
                    Console.Clear();
                    break;

                //Recorrido en Post Orden del Arbol
                case 3:
                    RecorridoPostorden(Raiz);
                    Console.WriteLine("Fin del Recorrido,...");
                    Console.ReadLine();
                    Console.Clear();
                    break;

                //Recorrido en In Orden del Arbol
                case 4:
                    RecorridoInorden(Raiz);
                    Console.WriteLine("Fin del Recorrido,...");
                    Console.ReadLine();
                    Console.Clear();
                    break;

                case 5:
                    Console.Write("Teclee el Contacto a Buscar: ");
                    Dato = int.Parse(Console.ReadLine());
                    if (Raiz != null)
                    {
                        BuscarNodo(Raiz, Dato);
                    }
                    else
                    {
                        Console.WriteLine("ERROR, Arbol Vacio....");
                    }
                    Console.Clear();
                    break;

                case 6:
                    Console.Write("Teclee el codigo del Contacto a Eliminar: ");
                    Dato = int.Parse(Console.ReadLine());
                    if (Raiz != null)
                    {
                        EliminarNodo(ref Raiz, Dato);
                    }
                    else
                    {
                        Console.WriteLine("ERROR, Arbol Vacio....");
                    }
                    Console.Clear();
                    break;

                case 7:
                    Finalizar();
                    break;
                }
            } while (Opcion != 7);
        }
Example #9
0
 //Constructor
 public NodoT()
 {
     this.NodoIzquierdo = null;
     this.Informacion   = 0;
     this.NodoDerecho   = null;
 }
Example #10
0
        static void Main(string[] args)
        {
            Console.Title = "ARBOLES BINARIOS:By MC Claudia Negrete Sanchez";
            int   Opcion = 0;
            NodoT Raiz   = null;
            int   Dato;

            do
            {
                Opcion = Menu(); //Llamada a la funcion menu
                switch (Opcion)
                {
                case 1: Console.Write("Valor del Nuevo Nodo (Valor numerico por favor): ");
                    Dato = int.Parse(Console.ReadLine());
                    if (Raiz == null)
                    {
                        NodoT NuevoNodo = new NodoT();
                        NuevoNodo.Informacion = Dato;
                        Raiz = NuevoNodo;
                    }
                    else
                    {
                        insertar(Raiz, Dato);
                    }
                    Console.Clear();
                    break;

                //Recorrido en Pre Orden del Arbol
                case 2: RecorridoPreorden(Raiz);
                    Console.WriteLine("Fin del Recorrido,...");
                    Console.ReadLine();
                    Console.Clear();
                    break;

                //Recorrido en Post Orden del Arbol
                case 3: RecorridoPostorden(Raiz);
                    Console.WriteLine("Fin del Recorrido,...");
                    Console.ReadLine();
                    Console.Clear();
                    break;

                //Recorrido en In Orden del Arbol
                case 4: RecorridoInorden(Raiz);
                    Console.WriteLine("Fin del Recorrido,...");
                    Console.ReadLine();
                    Console.Clear();
                    break;

                case 5: Console.Write("Teclee el Dato a Buscar: ");
                    Dato = int.Parse(Console.ReadLine());
                    if (Raiz != null)
                    {
                        BuscarNodo(Raiz, Dato);
                    }
                    else
                    {
                        Console.WriteLine("ERROR, Arbol Vacio....");
                    }
                    Console.Clear();
                    break;

                case 6: Console.Write("Teclee el Dato a Eliminar: ");
                    Dato = int.Parse(Console.ReadLine());
                    if (Raiz != null)
                    {
                        EliminarNodo(ref Raiz, Dato);
                    }
                    else
                    {
                        Console.WriteLine("ERROR, Arbol Vacio....");
                    }
                    Console.Clear();
                    break;

                case 7: Finalizar();
                    break;
                }
            } while (Opcion != 7);
        }