Ejemplo n.º 1
0
 //Metodo de Buscar un nodo
 static void BuscarNodo(Agenda Raiz, EntradaAgenda Dato)
 {
     if (Dato.getNombre()[dato] < Raiz.Informacion.getNombre()[dato])
     {
         //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.getNombre()[dato] > Raiz.Informacion.getNombre()[dato])
         {
             //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
         {
             if (Dato.getNombre() == Raiz.Informacion.getNombre())
             {
                 Console.WriteLine("Contacto Existente");
                 Console.WriteLine("Nombre: " + Raiz.Informacion.getNombre());
                 Console.WriteLine("Direccion: " + Raiz.Informacion.getDireccion());
                 Console.WriteLine("Telefono: " + Raiz.Informacion.getTelefono());
                 Console.WriteLine("Movil: " + Raiz.Informacion.getMovil());
                 Console.WriteLine("Email: " + Raiz.Informacion.getEmail());
                 Console.ReadLine();
             }
             else
             {
                 if (dato >= Dato.getNombre().Length - 1 || dato >= Raiz.Informacion.getNombre().Length - 1)
                 {
                     Console.WriteLine("ERROR, No se encuentra el Contacto...");
                     Console.ReadLine();
                 }
                 else
                 {
                     dato++;
                     BuscarNodo(Raiz, Dato);
                 }
             }
         }
     }
 }
Ejemplo n.º 2
0
 static void AuxCantidad(Agenda Raiz)
 {
     if (Raiz != null)
     {
         cant++;
         AuxCantidad(Raiz.NodoIzquierdo);
         AuxCantidad(Raiz.NodoDerecho);
     }
 }
Ejemplo n.º 3
0
 //Metodo de Eliminar
 static void EliminarNodo(ref Agenda Raiz, EntradaAgenda Dato)
 {
     if (Raiz != null)
     {
         if (Dato.getNombre()[dato] < Raiz.Informacion.getNombre()[dato])
         {
             EliminarNodo(ref Raiz.NodoIzquierdo, Dato);
         }
         else
         {
             if (Dato.getNombre()[dato] > Raiz.Informacion.getNombre()[dato])
             {
                 EliminarNodo(ref Raiz.NodoDerecho, Dato);
             }
             else
             {
                 //Si lo Encontro
                 Agenda NodoEliminar = Raiz;
                 if (NodoEliminar.NodoDerecho == null)
                 {
                     Raiz = NodoEliminar.NodoIzquierdo;
                 }
                 else
                 {
                     if (NodoEliminar.NodoIzquierdo == null)
                     {
                         Raiz = NodoEliminar.NodoDerecho;
                     }
                     else
                     {
                         Agenda AuxiliarNodo = null;
                         Agenda 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 Contacto no se Encuentra en la Agenda...");
         Console.ReadLine();
     }
 }
Ejemplo n.º 4
0
 static int CalcularCantidad(Agenda Raiz)
 {
     cant = 0;
     AuxCantidad(Raiz);
     return cant;
 }
Ejemplo n.º 5
0
 //Metodo de recorrido en In-Orden
 static void RecorridoInorden(Agenda Raiz)
 {
     if (Raiz != null)
     {
         RecorridoInorden(Raiz.NodoIzquierdo);
         Console.Write("{0},\t", Raiz.Informacion.getNombre());
         Console.Write("{0},\t", Raiz.Informacion.getDireccion());
         Console.Write("{0},\t", Raiz.Informacion.getTelefono());
         Console.Write("{0},\t", Raiz.Informacion.getMovil());
         Console.WriteLine("{0}", Raiz.Informacion.getEmail());
         RecorridoInorden(Raiz.NodoDerecho);
     }
 }
Ejemplo n.º 6
0
 static void Main(string[] args)
 {
     int Opcion = 0;
     Agenda Raiz = null;
     EntradaAgenda Dato;
     do
     {
         Opcion = Menu();
         switch (Opcion)
         {
             case 1:
                 dato = 0;
                 Dato = new EntradaAgenda();
                 Dato.ingresarEntrada();
                 if (Raiz == null)
                 {
                     Agenda NuevoNodo = new Agenda();
                     NuevoNodo.Informacion = Dato;
                     Raiz = NuevoNodo;
                 }
                 else
                 {
                     Insertar(Raiz, Dato);
                 }
                 Console.Clear();
                 break;
             //Recorrido en In Orden del Arbol
             case 2:
                 Console.WriteLine("Apellido,Nombre,\tDireccion,\tTelefono,\tMovil,\tEmail");
                 RecorridoInorden(Raiz);
                 Console.WriteLine("Fin del Recorrido,...");
                 Console.ReadLine();
                 Console.Clear();
                 break;
             case 3:
                 dato = 0;
                 Dato = new EntradaAgenda();
                 Dato.setNombre();
                 if (Raiz != null)
                 {
                     BuscarNodo(Raiz, Dato);
                 }
                 else
                 {
                     Console.WriteLine("ERROR, Arbol Vacio....");
                 }
                 Console.Clear();
                 break;
             case 4:
                 dato = 0;
                 Dato = new EntradaAgenda();
                 Dato.setNombre();
                 if (Raiz != null)
                 {
                     EliminarNodo(ref Raiz, Dato);
                 }
                 else
                 {
                     Console.WriteLine("ERROR, Arbol Vacio....");
                 }
                 Console.Clear();
                 break;
             case 5:
                 int cantidad;
                 cantidad = CalcularCantidad(Raiz);
                 Console.WriteLine("La cantidad de nodos es {0}", cantidad);
                 Console.ReadLine();
                 Console.Clear();
                 break;
             case 6:
                 Finalizar();
                 break;
         }
     } while (Opcion != 6);
 }
Ejemplo n.º 7
0
        //Insertar en un arbol binario
        static void Insertar(Agenda Raiz, EntradaAgenda Dato)
        {
            if (Dato.getNombre()[dato] < Raiz.Informacion.getNombre()[dato])
            {
                if (Raiz.NodoIzquierdo == null)
                {
                    Agenda NuevoNodo = new Agenda();
                    NuevoNodo.Informacion = Dato;
                    Raiz.NodoIzquierdo = NuevoNodo;
                }
                else
                {
                    //Llamada recursiva
                    Insertar(Raiz.NodoIzquierdo, Dato);
                }
            }
            else
            //Buscar por el lado derecho
            {
                if (Dato.getNombre()[dato] > Raiz.Informacion.getNombre()[dato])
                {
                    if (Raiz.NodoDerecho == null)
                    {
                        Agenda NuevoNodo = new Agenda();
                        NuevoNodo.Informacion = Dato;
                        Raiz.NodoDerecho = NuevoNodo;
                    }
                    else
                    {
                        //Llamada recursiva por el lado derecho
                        Insertar(Raiz.NodoDerecho, Dato);
                    }
                }
                else
                {
                    if (Dato.getNombre() == Raiz.Informacion.getNombre())
                    {
                        Console.WriteLine("Contacto Existente, Imposible Insertar...");
                        Console.ReadLine();
                    }
                    else
                    {
                        dato++;
                        Insertar(Raiz, Dato);

                    }
                }
            }
        }
Ejemplo n.º 8
0
 //Constructor
 public Agenda()
 {
     this.NodoIzquierdo = null;
     this.Informacion = new EntradaAgenda();
     this.NodoDerecho = null;
 }