static void Main(string[] args)
        {
            // Árbol Genérico
            Arbol      arbolito = new Arbol();
            NodoArbolG raiz     = arbolito.Insertar("A", null);

            arbolito.Insertar("B", raiz);
            arbolito.Insertar("C", raiz);

            //arbolito.TransversaPre(raiz);

            NodoArbolG n = arbolito.Insertar("D", raiz);

            arbolito.Insertar("H", n);
            n = arbolito.Insertar("E", raiz);
            NodoArbolG i = arbolito.Insertar("I", n);

            arbolito.Insertar("J", i);
            NodoArbolG p = arbolito.Insertar("Q", n);

            arbolito.Insertar("P", p);

            n = arbolito.Insertar("F", raiz);
            arbolito.Insertar("k", n);
            arbolito.Insertar("L", n);
            arbolito.Insertar("M", n);
            n = arbolito.Insertar("G", raiz);
            arbolito.Insertar("N", n);

            arbolito.TransversaPre(raiz);
            Console.WriteLine("-------");
            Console.WriteLine("Transversa Post-Order");
            arbolito.TransversaPost(raiz);
            //
            Console.WriteLine("Busqueda");
            if (arbolito.Buscar("N", raiz) != null)
            {
                Console.WriteLine("Dato encontrado = " + arbolito.Buscar("k", raiz).Dato);
            }
            else
            {
                Console.WriteLine("No lo encontre :(");
            }

            // Proceso de Inserción
            string donde = "";
            string que   = "";

            Console.WriteLine("En dónde deseas insertar?");
            donde = Console.ReadLine();
            Console.WriteLine("Qué deseas insertar?");
            que = Console.ReadLine();
            NodoArbolG encontrado = arbolito.Buscar(donde, raiz);

            arbolito.Insertar(que, encontrado);
            arbolito.TransversaPre(raiz);
        }
        static void Main(string[] args)
        {
            int   opc   = 0;
            Arbol arbol = new Arbol();                                                             //Creamos objeto arbol

            Console.Write("Ingrese que arbol quiere analizar: \nA) = 1 \nB) = 2 \nC) = 3 \nR = "); //Menu
            opc = int.Parse(Console.ReadLine());

            if (opc == 1)                              //Si elige 1, arbol a)
            {
                Nodo raiz = arbol.Insertar("E", null); //Nodo raiz

                arbol.Insertar("F", raiz);
                Nodo n = arbol.Insertar("A", raiz);
                arbol.Insertar("B", n);
                arbol.Insertar("C", n);
                arbol.Insertar("D", n);

                Console.WriteLine();
                arbol.Imprimir(raiz);                                            //Mandamos a llamar al Metodo imprimir para mostar el arbol en orden

                Console.WriteLine("Altura del arbol: {0}", arbol.Altura2(raiz)); //Metodo para calcular altura
                Console.WriteLine("Numero de Niveles: {0}", arbol.Nivel2(raiz)); //Metodo para calcular nivel
                arbol.Recorrido(opc);                                            //Imprime recorrido mas largo

                //arbol.Recorrido(raiz);
                //arbol.Imprimir2();
            }

            if (opc == 2)                              //Si elige 2, arbol b)
            {
                Nodo raiz = arbol.Insertar("C", null); //Nodo raiz
                Nodo n    = arbol.Insertar("A", raiz);
                Nodo j    = arbol.Insertar("B", n);
                arbol.Insertar("E", j);

                arbol.Insertar("G", raiz);
                arbol.Insertar("F", raiz);
                arbol.Insertar("D", raiz);

                Console.WriteLine();
                arbol.Imprimir(raiz);                                            //Mandamos a llamar al Metodo imprimir para mostar el arbol en orden
                Console.WriteLine("Altura del arbol: {0}", arbol.Altura2(raiz)); //Metodo para calcular altura
                Console.WriteLine("Numero de Niveles: {0}", arbol.Nivel2(raiz)); //Metodo para calcular nivel
                arbol.Recorrido(opc);                                            //Imprime recorrido mas largo

                //arbol.Recorrido(raiz);
                //arbol.Imprimir2();
            }

            if (opc == 3)                              //Si elige 2, arbol b)
            {
                Nodo raiz = arbol.Insertar("K", null); //Nodo raiz
                arbol.Insertar("B", raiz);
                Nodo d = arbol.Insertar("D", raiz);
                Nodo i = arbol.Insertar("I", d);
                arbol.Insertar("J", i);

                Nodo e = arbol.Insertar("E", d);
                Nodo g = arbol.Insertar("G", e);
                arbol.Insertar("H", g);
                arbol.Insertar("F", e);

                arbol.Insertar("C", raiz);
                arbol.Insertar("A", raiz);

                Console.WriteLine();
                arbol.Imprimir(raiz);                                                //Mandamos a llamar al Metodo imprimir para mostar el arbol en orden
                Console.WriteLine("Altura del arbol: {0}", arbol.Altura2(raiz) - 1); //Metodo para calcular altura
                Console.WriteLine("Numero de Niveles: {0}", arbol.Nivel2(raiz) - 1); //Metodo para calcular nivel
                arbol.Recorrido(opc);                                                //Imprime recorrido mas largo

                //arbol.Recorrido(raiz); arbol.Recorrido(raiz);
                //arbol.Imprimir2();
            }

            Console.ReadKey();
            //Codigo basado en:
            //https://www.youtube.com/watch?v=90qdczicwxw&fbclid=IwAR29A69kZL2_cgGyZkioN3cPq_GYO97PeYNOKpgIL_Mz0MZ7IssbUkIzZks
        }