示例#1
0
        public void RealizarOperacion()
        {
            Arboles Arbol = new Arboles();

            Arbol.InsertarNodo(1, 0, "A", 1);

            Arbol.InsertarNodo(2, 1, "B", 2);
            Arbol.InsertarNodo(3, 1, "C", 2);
            Arbol.InsertarNodo(5, 1, "E", 2);
            Arbol.InsertarNodo(4, 1, "D", 2);

            Arbol.InsertarNodo(6, 5, "F", 3);

            Console.WriteLine("El numero de nodos es de: " + (Arbol.ObtenerTamaño(Arbol.raiz, Arbol)));
            Console.WriteLine("La altura es de: " + Arbol.ObtenerAltura(Arbol.raiz, Arbol));
            Console.WriteLine("El numero de niveles es de: " + Arbol.ObtenerNiveles(Arbol.raiz, Arbol));
            Console.ReadLine();
            Arbol.ImprimirArbol(Arbol.raiz, Arbol);
            Console.ReadLine();
            Console.Write("Ruta al elemento mas largo (Ruta mas larga): ");
            Arbol.ImprimirRuta(Arbol.raiz, Arbol, "F", Arbol.raiz);
            Console.ReadLine();
            //Console.Write("Ruta al elemento mas largo: G -> A -> C");
            //Console.ReadLine();
        }
示例#2
0
 public void ImprimirRuta(Nodo Nodin, Arboles Arbolin, string letra, Nodo Temporal)
 {
     ObtenerRuta(Nodin, Arbolin, letra, Temporal); //Obtiene la ruta
     Ruta.AddFirst(Nodin.Letra);                   //Debido a que mi metodo no lee la raiz por alguna razon la agrego al final
     foreach (string wea in Ruta)
     {
         Console.Write("{0} -> ", wea);      //Despliega la lista que tiene la ruta al nodo en cuestion
     }
     Ruta.Clear();
 }
示例#3
0
 public void ImprimirArbol(Nodo Nodin, Arboles Arbolin, int prueba)     //Metodo recursivo para imprimir el arbol basado en el de altura y niveles
 {
     if (Nodin != null)                                                 //Si el nodo no esta vacio.
     {
         foreach (Nodo wea in Nodin.Hijos)                              //Por cada nodo en la lista de hijos de un nodo
         {
             Console.WriteLine("Nivel {0}: {1}", wea.Nivel, wea.Letra); //Imprime la letra y el nivel del nodo
             ImprimirArbol(wea, Arbolin, 1);                            //Vuelve a llamar el metodo
         }
     }
 }
示例#4
0
 int tamaño = 0; //Obtiene el tamaño del arbol (Numero de nodos)
 public int ObtenerTamaño(Nodo Nodin, Arboles arbolin)
 {
     if (Nodin != null)                    //si el nodo no esta nulo entra al metodo recursivo para conseguir el tamaño
     {
         tamaño++;                         //Aumenta el tamaño en uno
         foreach (Nodo wea in Nodin.Hijos) //Por cada nodo dentro de la lista de hijos de un nodo
         {
             ObtenerTamaño(wea, arbolin);  //Llamara al metodo otra vez, sumando el tamaño en uno y esta vez sera con un nodo dentro
         }                                 //de la lista de hijos.
     }
     return(tamaño);                       //Regresa el tamaño del arbol.
 }
示例#5
0
 int altura = 2;                                       //Obtiene la altura del arbol, empieza en dos porque la altura solo la sumo si un nodo tiene hijos
 public int ObtenerAltura(Nodo Nodin, Arboles arbolin) //Y como no cuenta el nodo inicial debido a como funciona el metodo
 {                                                     //Ademas de que no suma si el nodo no tiene hijos
     if (Nodin != null)
     {
         foreach (Nodo wea in Nodin.Hijos)            //Por cada nodo dentro de una lista reliza el proceso recursivo
         {
             if (wea.Hijos.Count > 0)                 //Si la lista de hijos tiene mas de 0 entonces se le suma la altura uno
             {
                 altura++;
             }
             ObtenerAltura(wea, arbolin); //Se vuelve a llamar el metodo para hacerlo recursivo que termina hasta que un nodo
         }                                //esta vacio
     }
     return(altura);                      //Regresa la altura.
 }
示例#6
0
 public void ObtenerRuta(Nodo Nodin, Arboles Arbolin, string letra, Nodo Temporal) //Metodo recursivo para hacer la ruta a un nodo en especifico
 {
     if (Nodin != null)                                                            //Ingreso dos veces la raiz debido a que la raiz sera necesario para que se pueda volver a recorrer el arbol
     {                                                                             //Debido a como funciona el metodo recursivo
         foreach (Nodo wea in Nodin.Hijos)
         {
             if (letra == wea.Letra)                                    //Cuando se encuentra el nodo que tiene la letra buscada
             {
                 Ruta.AddFirst(wea.Letra);                              //Se agrega la letra a la lista
                 ObtenerRuta(Temporal, Arbolin, Nodin.Letra, Temporal); //Vuelve a llamar el metodo pero desde el inicio otra vez y esta vez la letra buscada
             }                                                          //Es la del nodo que tenia de hijo al nodo buscado
             else
             {
                 ObtenerRuta(wea, Arbolin, letra, Temporal); //Vuelve a llamar el metodo si no es la misma letra
             }
         }
     }
 }
示例#7
0
        public void RealizarOperacion()
        {
            Arboles Arbol = new Arboles();

            Arbol.InsertarNodo(11, 0, "K", 1);

            Arbol.InsertarNodo(2, 11, "B", 2);
            Arbol.InsertarNodo(1, 11, "A", 2);
            Arbol.InsertarNodo(3, 11, "C", 2);
            Arbol.InsertarNodo(4, 11, "D", 2);

            Arbol.InsertarNodo(9, 4, "I", 3);
            Arbol.InsertarNodo(5, 4, "E", 3);

            Arbol.InsertarNodo(6, 5, "F", 4);
            Arbol.InsertarNodo(7, 5, "G", 4);
            Arbol.InsertarNodo(10, 9, "J", 4);

            Arbol.InsertarNodo(8, 7, "H", 5);


            Console.WriteLine("El numero de nodos es de: " + (Arbol.ObtenerTamaño(Arbol.raiz, Arbol)));
            Console.WriteLine("La altura es de: " + Arbol.ObtenerAltura(Arbol.raiz, Arbol));
            Console.WriteLine("El numero de niveles es de: " + Arbol.ObtenerNiveles(Arbol.raiz, Arbol));
            Console.ReadLine();
            Arbol.ImprimirArbol(Arbol.raiz, Arbol);
            Console.ReadLine();
            Console.Write("Ruta a C: ");
            Arbol.ImprimirRuta(Arbol.raiz, Arbol, "C", Arbol.raiz);
            Console.ReadLine();
            Console.Write("Ruta a H: ");
            Arbol.ImprimirRuta(Arbol.raiz, Arbol, "H", Arbol.raiz);
            Console.ReadLine();
            Console.Write("Ruta a J: ");
            Arbol.ImprimirRuta(Arbol.raiz, Arbol, "J", Arbol.raiz);
            Console.ReadLine();
        }
示例#8
0
 public void ImprimirArbol(Nodo Nodin, Arboles Arbolin)             //Metodo recursivo para imprimir el arbol basado en el de altura y niveles
 {
     Console.WriteLine("Nivel {0}: {1}", Nodin.Nivel, Nodin.Letra); //Imprime el nivel y la letra
     ImprimirArbol(Nodin, Arbolin, 1);                              //LLama al metodo sobrecargado para hacerlo recursivo
 }