Exemplo n.º 1
0
        /// <summary>
        /// Menu en caso de todos los datos del arbol sean enteros
        /// </summary>
        /// <param name="node">Arbol el cual se va manipular</param>
        /// <param name="nombre">nombre del arbol para mostrar al usuario</param>
        static public void MenuMostrar_C2(ref NodoArbol node, string nombre)
        {
            bool rep = false;

            do
            {
                Console.Clear();
                Console.Title = $"Arbol {nombre}";
                Console.WriteLine("1.- Mostrar Datos del Arbol");
                Console.WriteLine("2.- Insertar nodo");
                Console.WriteLine("3.- Eliminar nodo");
                Console.WriteLine("4.- Buscar nodo en el arbol");
                Console.WriteLine("5.- Buscar padre");
                Console.WriteLine("6.- Recorrido PreOrden");
                Console.WriteLine("7.- Recorrido InOrden");
                Console.WriteLine("8.- Recorrido PostOrden");
                Console.WriteLine("9.- Salir del Menu Actual");
                Console.WriteLine("10.- Salir del Programa");

                try
                {
                    switch (int.Parse(Console.ReadLine()))
                    {
                    case 1:
                        Console.Clear();
                        ABB.Transversa(node);
                        System.Threading.Thread.Sleep(2000);
                        rep = true;
                        break;

                    case 2:
                        var valor = MenuInsercionInt();
                        node = ABB.Insertar(valor, node);
                        rep  = true;
                        break;

                    case 3:
                        Console.WriteLine("Que valor desea eliminar?");
                        ABB.BorrarNodo(int.Parse(Console.ReadLine()), node);
                        rep = true;
                        break;

                    case 4:
                        Console.Clear();

                        Console.Write("Valor a buscar: \t");
                        int valor2 = int.Parse(Console.ReadLine());

                        if (Recorridos.Resultado_Buscar(node, valor2))
                        {
                            NodoArbol nodoBuscado = Recorridos.Buscar(node, valor2);
                            string    mensaje     = $"El elemento {nodoBuscado.Valor} si existe; ";

                            if (nodoBuscado.Izq != null)
                            {
                                mensaje += $"su hijo izquierdo es {nodoBuscado.Izq.Valor}";
                            }
                            else
                            {
                                mensaje += "su hijo izquierdo es null";
                            }

                            if (nodoBuscado.Der != null)
                            {
                                mensaje += $", su hijo derecho es {nodoBuscado.Der.Valor}";
                            }
                            else
                            {
                                mensaje += $", su hijo derecho es null";
                            }

                            Console.WriteLine(mensaje);
                        }
                        else
                        {
                            Console.WriteLine("El elemento no existe");
                        }

                        Console.ReadKey();

                        rep = true;
                        break;

                    case 5:
                        Console.Clear();
                        Console.Write("Valor a evaluar: \t");
                        int valor3 = int.Parse(Console.ReadLine());

                        if (Recorridos.Resultado_Buscar(node, valor3))
                        {
                            NodoArbol result = ABB.BuscarPadre(valor3, node);

                            if (result == null)
                            {
                                Console.WriteLine($"El valor {valor3} es la raiz");
                            }
                            else
                            {
                                Console.WriteLine($"El padre de {valor3} es {result.Valor}");
                            }
                        }
                        else
                        {
                            Console.WriteLine("El elemento no existe");
                        }

                        Console.ReadKey();
                        rep = true;
                        break;


                    case 6:
                        Recorridos.PreOrden(node);
                        System.Threading.Thread.Sleep(2000);
                        rep = true;
                        break;

                    case 7:
                        Recorridos.InOrden(node);
                        System.Threading.Thread.Sleep(2000);
                        rep = true;
                        break;

                    case 8:
                        Recorridos.PostOrden(node);
                        System.Threading.Thread.Sleep(2000);
                        rep = true;
                        break;

                    case 9:
                        rep = false;
                        break;

                    case 10:
                        Environment.Exit(0);
                        break;

                    default:
                        Console.WriteLine("Ingrese una opcion valida");
                        rep = true;
                        break;
                    }
                }
                catch (System.FormatException)
                {
                    Console.WriteLine("Ingrese un valor numerico");
                }
            } while (rep);
        }