Пример #1
0
        public static void Main(string[] args)
        {
            ArbolBinario <int> arbolBinarioA = new ArbolBinario <int>(1);

            ArbolBinario <int> hijoIzquierdo = new ArbolBinario <int>(2);

            hijoIzquierdo.agregarHijoIzquierdo(new ArbolBinario <int>(3));
            hijoIzquierdo.agregarHijoDerecho(new ArbolBinario <int>(4));

            ArbolBinario <int> hijoDerecho = new ArbolBinario <int>(5);

            hijoDerecho.agregarHijoIzquierdo(new ArbolBinario <int>(6));
            hijoDerecho.agregarHijoDerecho(new ArbolBinario <int>(7));

            arbolBinarioA.agregarHijoIzquierdo(hijoIzquierdo);
            arbolBinarioA.agregarHijoDerecho(hijoDerecho);

            arbolBinarioA.preorden();
            arbolBinarioA.inorden();
            arbolBinarioA.postorden();
            arbolBinarioA.recorridoPorNiveles();
            Console.WriteLine("prueba del commit");
            Console.Write("Presione una tecla para concluir la ejecucion . . . ");
            Console.ReadKey(true);
        }
Пример #2
0
        public IActionResult Index()//Menu del Programa
        {
            if (Singleton.Instance.VerificacionHospitales != 1)
            {
                //Creacion de todos los hospitales
                var    filename = System.IO.Path.Combine(_enviroment.ContentRootPath, "Upload", "Municipios.csv");
                string ccc      = System.IO.File.ReadAllText(filename);
                foreach (string row in ccc.Split('\n'))
                {
                    ColaPrioridad <DatosPaciente>      NuevoHospital          = new ColaPrioridad <DatosPaciente>();
                    ArbolBinario <DatosPaciente>       NuevaBusquedadHospital = new ArbolBinario <DatosPaciente>();
                    EstructuraDeFechas <DatosPaciente> NuevoEstructuraFechas  = new EstructuraDeFechas <DatosPaciente>();
                    if (!string.IsNullOrEmpty(row))
                    {
                        var    result    = Regex.Split(row, "(?:^|,)(\"(?:[^\"]+|\"\")*\"|[^,]*)");
                        string Muni      = Convert.ToString(result[1].Replace('\r', ' ').ToUpper());
                        string Municipio = Regex.Replace(Muni, @"\s", "").ToUpper();
                        Singleton.Instance.HospitalesColas.Encolar(Singleton.Instance.HospitalesColas.CrearEstructura(Municipio, NuevoHospital));
                        Singleton.Instance.BusquedadHospitales.Encolar(Singleton.Instance.BusquedadHospitales.CrearEstructura(Municipio, NuevaBusquedadHospital));
                        Singleton.Instance.BusquedadHospitalApellido.Encolar(Singleton.Instance.BusquedadHospitalApellido.CrearEstructura(Municipio, NuevaBusquedadHospital));
                        Singleton.Instance.BusquedadHospitalDPI.Encolar(Singleton.Instance.BusquedadHospitalDPI.CrearEstructura(Municipio, NuevaBusquedadHospital));
                        Singleton.Instance.EstructuraParaCitas.Encolar(Singleton.Instance.EstructuraParaCitas.CrearEstructura(Municipio, NuevoEstructuraFechas));
                    }
                }

                //Negacion para que ya no lo vuelva a hacer
                Singleton.Instance.VerificacionHospitales++;
            }
            Singleton.Instance.Listacamasvacunacion.Clear();

            return(View());
        }
Пример #3
0
 public void Iniciar()
 {
     arbol    = new ArbolBinario();
     matriz   = new Matriz(1);
     jugador1 = "";
     jugador2 = "";
 }
Пример #4
0
        static void Main(string[] args)
        {
            // prueba1
            ArbolBinario <int> uno = new ArbolBinario <int>(5,
                                                            new ArbolBinario <int>(8,
                                                                                   new ArbolBinario <int>(13)),
                                                            new ArbolBinario <int>(9,
                                                                                   new ArbolBinario <int>(2),
                                                                                   new ArbolBinario <int>(6)));

            ArbolBinario <int> dos = new ArbolBinario <int>(2,
                                                            new ArbolBinario <int>(1),
                                                            new ArbolBinario <int>(4));

            Arborear(uno, dos, Suma);

            PrintArbol(uno, 0);

            Console.WriteLine();

            // prueba2
            ArbolBinario <string> primero = new ArbolBinario <string>("ti",
                                                                      new ArbolBinario <string>("la"));

            ArbolBinario <string> segundo = new ArbolBinario <string>("na",
                                                                      new ArbolBinario <string>("ti", null,
                                                                                                new ArbolBinario <string>("nce")),
                                                                      new ArbolBinario <string>("ss", null,
                                                                                                new ArbolBinario <string>("pri")));

            Arborear(primero, segundo, Concatena);

            PrintArbol(primero, 0);
        }
Пример #5
0
        public bool cargaUsuarios(string direccion, ArbolBinario arbol_usuarios)//codigo basico para leer un archivo
        {
            bool todo_bien;

            System.IO.StreamReader archivo = new System.IO.StreamReader(direccion);
            string entrada = "";

            string[]        split;
            Objetos.Persona actual;
            try
            {
                if (archivo.Peek() > -1)
                {
                    entrada = archivo.ReadLine();//me como la primera linea porque por lo visto es una cabezera
                }
                while (archivo.Peek() > -1)
                {
                    entrada = archivo.ReadLine();
                    if (!string.IsNullOrEmpty(entrada))
                    {
                        split  = entrada.Split(',');
                        actual = new Objetos.Persona(split[1], split[2]);
                        actual.setConectado(split[3]);
                        arbol_usuarios.insertar(actual, split[0]);
                    }
                }
                todo_bien = true;
            }
            catch (Exception e)
            {
                todo_bien = false;
            }
            archivo.Close();
            return(todo_bien);
        }
Пример #6
0
    public static void MenuPrincipal(ArbolBinario arbol)
    {
        Console.Clear();

        Console.WriteLine("REPRESENTACIÓN VISUAL | Nodos = {0}", arbol.Cantidad());
        Console.WriteLine("-----------------------------------------------------");
        Console.WriteLine("Pre-Orden:");
        arbol.ImprimirPreOrden();
        Console.WriteLine("In-Orden:");
        arbol.ImprimirInOrden();
        Console.WriteLine("Post-Orden:");
        arbol.ImprimirPostOrden();
        Console.WriteLine("_____________________________________________________\n");

        Console.WriteLine(".---.        .---.        .---.        .---.        .---.");
        Console.WriteLine("| 1 |        | 2 |        | 3 |        | 4 |        | E |");
        Console.WriteLine("'==='        '==='        '==='        '==='        '==='");
        Console.WriteLine("Insertar     Pr.O Nivel   In.O Nivel   Po.O Nivel   Eliminar\n");

        Console.WriteLine(".---.        .---.        .---.        .---.");
        Console.WriteLine("| 5 |        | 6 |        | 7 |        | 8 |");
        Console.WriteLine("'==='        '==='        '==='        '==='");
        Console.WriteLine("Elim. Men.   Elim. May.   +Info        Limpiar\n");
        Console.WriteLine("[ESC] para salir del programa!");
    }
Пример #7
0
        static void Main(string[] args)
        {
            try
            {
                ArbolBinario arbol;
                Nodo         a1, a2, a;
                Stack        pila = new Stack();

                a1 = ArbolBinario.nuevoArbol(null, "Maria", null);
                a2 = ArbolBinario.nuevoArbol(null, "Fabricio", null);
                a  = ArbolBinario.nuevoArbol(a1, "Gaby", a2);
                pila.Push(a); //apilar
                a1 = ArbolBinario.nuevoArbol(null, "Andrea", null);
                a2 = ArbolBinario.nuevoArbol(null, "Abel", null);
                a  = ArbolBinario.nuevoArbol(a1, "Monica", a2);
                pila.Push(a);//apilar

                a1 = (Nodo)pila.Pop();
                a2 = (Nodo)pila.Pop();

                a     = ArbolBinario.nuevoArbol(a1, "Hector", a2);
                arbol = new ArbolBinario(a);

                Console.WriteLine("preorden");
                preorden(a);
            }
            catch (Exception ex)
            {
                Console.WriteLine("error" + ex.Message);
            }
        }
Пример #8
0
        public static void Resuelve(ref int mejor, ArbolBinario primero, ArbolBinario segundo, int llamado, List <ArbolBinario> lista, int ultimoIndice)
        {
            if (ArbolesIguales(primero, segundo))
            {
                if (mejor > llamado)
                {
                    mejor = llamado;
                }
                return;
            }
            else if (ultimoIndice < lista.Count && lista[ultimoIndice].EsHoja)
            {
                return;
            }

            for (int indice = ultimoIndice; indice < lista.Count; indice++)
            {
                ArbolBinario temp = lista[indice].Izquierdo;
                lista[indice].Izquierdo = lista[indice].Derecho;
                lista[indice].Derecho   = temp;

                Resuelve(ref mejor, primero, segundo, llamado + 1, lista, indice + 1);

                temp = lista[indice].Izquierdo;
                lista[indice].Izquierdo = lista[indice].Derecho;
                lista[indice].Derecho   = temp;
            }
        }
Пример #9
0
        public void Imprimir_1()
        {
            ArbolBinario arbol = new ArbolBinario(); // crea un objeto arbol de BinaryTree

            arbol.z                                   = new Node("A");
            arbol.z.Izquierda                         = new Node("B");
            arbol.z.Medio                             = new Node("C");
            arbol.z.Derecha                           = new Node("D");
            arbol.z.Izquierda.Izquierda               = new Node("E");
            arbol.z.Izquierda.Medio                   = new Node("F");
            arbol.z.Izquierda.Derecha                 = new Node("G");
            arbol.z.Derecha.Izquierda                 = new Node("H");
            arbol.z.Derecha.Medio                     = new Node("I");
            arbol.z.Derecha.Derecha                   = new Node("J");
            arbol.z.Izquierda.Izquierda.Izquierda     = new Node("K");
            arbol.z.Izquierda.Izquierda.Medio         = new Node("L");
            arbol.z.Izquierda.Izquierda.Derecha       = new Node("M");
            arbol.z.Izquierda.Derecha.Medio           = new Node("N");
            arbol.z.Derecha.Izquierda.Medio           = new Node("O");
            arbol.z.Derecha.Derecha.Izquierda         = new Node("P");
            arbol.z.Derecha.Derecha.Derecha           = new Node("Q");
            arbol.z.Izquierda.Derecha.Medio.Izquierda = new Node("R");
            arbol.z.Izquierda.Derecha.Medio.Derecha   = new Node("S");

            Console.WriteLine("Arbol A");
            Console.WriteLine("Recorrido preorden " + "del arbol es ");
            arbol.PrintPreorder();
            Console.WriteLine();
            Console.WriteLine("\nRecorrido posorden " + "del arbol es ");
            arbol.PrintPostorder();
            Console.WriteLine();
            Console.ReadKey();
        }
Пример #10
0
        public static int MinimoInserciones1(ArbolBinario arbol)
        {
            int cuantos = 0;

            Resuelve1(arbol, arbol, ref cuantos);

            return(cuantos);
        }
Пример #11
0
        private string codigoArbol(ArbolBinario mi_arbol)//funcion para generar el codigo del arbol binario de busqueda
        {
            string salida = "digraph g{\n";
            Nodo   aux    = mi_arbol.raiz;

            salida += codigoNodos(aux);
            salida += "}";
            return(salida);
        }
Пример #12
0
        public static int MinimoInserciones2(ArbolBinario arbol)
        {
            int altura = 0;

            Altura(arbol, 0, ref altura);
            List <ArbolBinario> nueva = new List <ArbolBinario>();

            nueva.Add(arbol);
            return(Resuelve2(nueva, altura, 0, 0));
        }
Пример #13
0
 public static void HazPreorden(ArbolBinario arbol, List <ArbolBinario> lista)
 {
     lista.Add(arbol);
     if (arbol.Izquierdo != null)
     {
         HazPreorden(arbol.Izquierdo, lista);
     }
     if (arbol.Derecho != null)
     {
         HazPreorden(arbol.Derecho, lista);
     }
 }
Пример #14
0
        public static int MinimoMutaciones(ArbolBinario uno, ArbolBinario dos)
        {
            int minimo = int.MaxValue;
            List <ArbolBinario> myLista = new List <ArbolBinario>();

            HazPreorden(uno, myLista);
            Resuelve(ref minimo, uno, dos, -1, myLista, 0);
            if (minimo == int.MaxValue)
            {
                return(-1);
            }
            return(minimo);
        }
Пример #15
0
        //Guarda árbol binario en la sesión del usuario
        public static string GuardarArbol(ArbolBinario arbolBinario)
        {
            // Se almacena en la SESSION simulando el guardado en una base de datos
            // se recomienta no utilizar la session en los servicios REST en modo "stateless" por
            // efectos de rendimiento, para este caso se hace la excepcion ya que es un ejemplo, evitando asi la
            // generación y almacenamiento de una base de datos local o remota
            string id = Guid.NewGuid().ToString();

            HttpContext.Current.Session[id] = arbolBinario;

            // retorna identificador del arbol creado
            return(id);
        }
Пример #16
0
        public static void Aplica <T5>(ArbolBinario <T5> primero, ArbolBinario <T5> segundo, Opera <T5> opera)
        {
            primero.Valor = opera(primero.Valor, segundo.Valor);

            if (primero.Izquierdo != null && segundo.Izquierdo != null)
            {
                Aplica(primero.Izquierdo, segundo.Izquierdo, opera);
            }
            if (primero.Derecho != null && segundo.Derecho != null)
            {
                Aplica(primero.Derecho, segundo.Derecho, opera);
            }
        }
Пример #17
0
        public bool graficarArbolBinario(ArbolBinario mi_arbol, string ruta_destino = "", string nombre_dot = "arbolBin.dot", string nombre_png = "arbolBin.png")
        {
            // string nombre_dot = "arbolBin.dot";//nombre del dot
            // string nombre_png = "arbolBin.png";//nombre de la grafica
            string ruta_dot = Path.Combine(path, nombre_dot);
            string ruta_png = Path.Combine(path, nombre_png);
            bool   bandera;

            //if (guardar(codigoArbol(mi_arbol), Path.Combine(ruta, nombre_dot)))//1.guardamos el codigo
            if (guardar(codigoArbol(mi_arbol), nombre_dot))//1.guardamos el codigo
            {
                string comando;
                if (!string.IsNullOrEmpty(ruta_destino))
                {
                    comando = "dot " + "-Tpng \"" + ruta_dot + "\" -o \"" + Path.Combine(ruta_destino, nombre_png) + "\"";
                }
                else
                {
                    comando = "dot " + "-Tpng \"" + ruta_dot + "\" -o \"" + ruta_png + "\"";
                }
                if (llamarCMD(comando))
                {
                    bandera = true;
                }
                else
                {
                    bandera = false;
                }
            }
            else
            {
                bandera = false;
            }
            if (bandera)
            {
                if (!string.IsNullOrEmpty(ruta_destino))
                {
                    string destino_final = Path.Combine(ruta_destino, nombre_png);
                    if (File.Exists(destino_final))//elimino la imagen anterior
                    {
                        File.Delete(destino_final);
                    }
                    if (File.Exists(ruta_png))
                    {
                        copiarImagen(ruta_png, destino_final);
                    }
                }
            }
            return(bandera);
        }
    public static void MP_T6_EliminarMayor(ArbolBinario arbol)
    {
        if (!arbol.EstaVacio)
        {
            arbol.EliminarNodoMayor();
            Console.Write("ÉXITO: Se eliminó el nodo mayor :)");
        }
        else
        {
            Console.Write("FRACASO: El árbol está vacío!");
        }

        Thread.Sleep(1500);
    }
Пример #19
0
        private bool BuscarMedicinas(ArbolBinario <Indice> indice, List <string> nombresMedicina)
        {
            var existen = true;

            foreach (var item in nombresMedicina)
            {
                var medicina = new Indice(0, item);
                if (indice.Buscar(indice.Raiz, medicina, Indice.OrdenarPorNombre) == false)
                {
                    existen = false;
                }
            }
            return(existen);
        }
Пример #20
0
        public static void HazEntreOrden <T3>(ArbolBinario <T3> arbolActual, List <ArbolBinario <T3> > lista)
        {
            if (arbolActual.HijoIzq != null)
            {
                HazEntreOrden(arbolActual.HijoIzq, lista);
            }

            lista.Add(arbolActual);

            if (arbolActual.HijoDer != null)
            {
                HazEntreOrden(arbolActual.HijoDer, lista);
            }
        }
    // MENUS Y CAPTURA DE TECLAS
    //----------------------------------------------
    public static void Menu(ArbolBinario arbol)
    {
        ConsoleKeyInfo tecla;

        do
        {
            Vista.MenuPrincipal(arbol);
            tecla = Console.ReadKey(true);

            switch (tecla.Key.ToString())
            {
            case "D1":
                MP_T1_Insertar(arbol);
                break;

            case "D2":
                MP_T2_PreOrdNiv(arbol);
                break;

            case "D3":
                MP_T3_InOrdNiv(arbol);
                break;

            case "D4":
                MP_T4_PostOrdNiv(arbol);
                break;

            case "E":
                MP_TE_Eliminar(arbol);
                break;

            case "D5":
                MP_T5_EliminarMenor(arbol);
                break;

            case "D6":
                MP_T6_EliminarMayor(arbol);
                break;

            case "D7":
                MP_T7_MasInformacion(arbol);
                break;

            case "D8":
                arbol.Limpiar();
                break;
            }
        } while (tecla.Key != ConsoleKey.Escape);
    }
Пример #22
0
 public static void Altura(ArbolBinario arbolActual, int llamado, ref int mayor)
 {
     if (llamado > mayor)
     {
         mayor = llamado;
     }
     if (arbolActual.HijoIzq != null)
     {
         Altura(arbolActual.HijoIzq, llamado + 1, ref mayor);
     }
     if (arbolActual.HijoDer != null)
     {
         Altura(arbolActual.HijoDer, llamado + 1, ref mayor);
     }
 }
Пример #23
0
 public static void PreOrdenPorNivel <T4>(ArbolBinario <T4> arbol, int llamado, int nivel, List <ArbolBinario <T4> > lista)
 {
     if (llamado == nivel)
     {
         lista.Add(arbol);
         return;
     }
     if (arbol.Izquierdo != null)
     {
         PreOrdenPorNivel(arbol.Izquierdo, llamado + 1, nivel, lista);
     }
     if (arbol.Derecho != null)
     {
         PreOrdenPorNivel(arbol.Derecho, llamado + 1, nivel, lista);
     }
 }
    // MANEJO DE ACCIÓN POR TECLA PRESIONADA
    //--------------------------------------------------------------
    public static void MP_T1_Insertar(ArbolBinario arbol)
    {
        bool leido = true;

        Console.Write("Dame dato para insertar en árbol: ");
        int dato = Helpers.LeerNumero(ref leido);

        if (leido)
        {
            arbol.Insertar(dato);
        }
        if (!leido)
        {
            Thread.Sleep(1500);
        }
    }
Пример #25
0
        public static bool ArbolesIguales(ArbolBinario primeroActual, ArbolBinario segundoActual)
        {
            if (primeroActual.EsHoja && segundoActual.EsHoja)
            {
                return(true);
            }

            if (((primeroActual.Izquierdo != null && segundoActual.Izquierdo != null && ArbolesIguales(primeroActual.Izquierdo, segundoActual.Izquierdo)) ||
                 (primeroActual.Izquierdo == null && segundoActual.Izquierdo == null)) && ((primeroActual.Derecho != null && segundoActual.Derecho != null &&
                                                                                            ArbolesIguales(primeroActual.Derecho, segundoActual.Derecho)) || (primeroActual.Derecho == null && segundoActual.Derecho == null)))
            {
                return(true);
            }

            return(false);
        }
Пример #26
0
 public static void PrintArbol(ArbolBinario arbolActual, int llamado)
 {
     for (int veces = 0; veces <= llamado; veces++)
     {
         Console.Write("-");
     }
     Console.Write(arbolActual.Valor);
     Console.WriteLine();
     if (arbolActual.HijoIzq != null)
     {
         PrintArbol(arbolActual.HijoIzq, llamado + 1);
     }
     if (arbolActual.HijoDer != null)
     {
         PrintArbol(arbolActual.HijoDer, llamado + 1);
     }
 }
Пример #27
0
        public static ArbolBinario <T3> Arborear <T3>(ArbolBinario <T3> primero, ArbolBinario <T3> segundo, Opera <T3> operacion)
        {
            int altura = Altura(primero);

            for (int nivel = 0; nivel <= altura; nivel++)
            {
                List <ArbolBinario <T3> > arbolesNivel = new List <ArbolBinario <T3> >();

                PreOrdenPorNivel(primero, 0, nivel, arbolesNivel);

                foreach (var arbol in arbolesNivel)
                {
                    Aplica(arbol, segundo, operacion);
                }
            }
            return(primero);
        }
Пример #28
0
        public static void PrintArbol <T7>(ArbolBinario <T7> arbolActual, int llamado)
        {
            for (int nivel = 0; nivel <= llamado; nivel++)
            {
                Console.Write("-");
            }
            Console.Write(arbolActual.Valor);
            Console.WriteLine();

            if (arbolActual.Izquierdo != null)
            {
                PrintArbol(arbolActual.Izquierdo, llamado + 1);
            }
            if (arbolActual.Derecho != null)
            {
                PrintArbol(arbolActual.Derecho, llamado + 1);
            }
        }
Пример #29
0
        public IHttpActionResult Crear([FromBody] string[] nodosArbol)
        {
            // Instancia clase de arbol binario
            ArbolBinario arbolBinario = new ArbolBinario();

            // Itera e inserta cada nodo de arbol
            for (int i = 0; i < nodosArbol.Length; i++)
            {
                arbolBinario.InsertarNodo(int.Parse(nodosArbol[i]));
            }

            // Almacena arbol en base de datos (simulación), retorna identificador
            // único para posterior consulta
            string id = Almacenamiento.GuardarArbol(arbolBinario);

            // Retorna ID de arbol creado
            return(Ok(id));
        }
Пример #30
0
        static void Main(string[] args)
        {
            ArbolBinario ggmen = new ArbolBinario();
            int          ob;
            int          a = 42, b = 53, c = 33, d = 53, e = 72, f = 6, g = 7;

            Console.WriteLine(" Insertando valores manualmente en el árbol: ");
            ggmen.Agregar(a);
            ggmen.Agregar(b);
            ggmen.Agregar(c);
            ggmen.Agregar(d);
            ggmen.Agregar(e);
            ggmen.Agregar(f);
            ggmen.Agregar(g);

            Console.WriteLine(" " + " " + " " + "/" + "e");
            Console.WriteLine(" " + " " + "/" + "b");
            Console.WriteLine(" " + "/" + "a");
            Console.WriteLine("|--" + "g");
            Console.WriteLine("c");
            Console.WriteLine("|_" + "f");
            Console.WriteLine("|_" + "d");

            Console.WriteLine("Valores insertados: " + a + " " + b + " " + c + " " + d + " " + e + " " + f + " " + g);
            ggmen.PrintAlturaDeCadaNod();
            do
            {
                Console.WriteLine("/////////////////////////////// ");
                Console.WriteLine("1.-Cantidad de nodos del arbol.");
                Console.WriteLine("2.-Altura del arbol.");
                Console.WriteLine("0.-Salir");
                ob = int.Parse(Console.ReadLine());
                switch (ob)
                {
                case 1:
                    Console.WriteLine("Cantidad de nodos del árbol:" + ggmen.Cantidad());
                    break;

                case 2:
                    Console.WriteLine("La altura del arbol es:" + ggmen.ReturnAltura());
                    break;
                }
            } while (ob != 0);
        }