示例#1
0
        /// <summary>
        /// Devuelvo la cantidad de niveles que posee el árbol para referenciar en el módulo 2-3.
        /// </summary>
        /// <param name="niv"></param>
        /// <returns></returns>
        public int ContarNiveles(ref int niv)
        {
            Cola <ArbolDecision <T> > nodo = new Cola <ArbolDecision <T> >();

            nodo.encolar(this);
            nodo.encolar(null);
            while (!nodo.esVacia())
            {
                if (nodo.tope() != null)
                {
                    if (!nodo.tope().EsHoja())
                    {
                        nodo.encolar(nodo.tope().HijoIzquierdo);
                        nodo.encolar(nodo.tope().HijoDerecho);
                        nodo.encolar(null);
                    }
                    nodo.desencolar();
                }
                else
                {
                    nodo.desencolar();
                    //Mientras haya elementos incremento la variable para obtener la profundidad
                    if (!nodo.esVacia())
                    {
                        niv++;
                    }
                }
            }
            return(niv);
        }
示例#2
0
        /// <summary>
        /// Imprimo tanto hojas como nodos dependiendo el nodo que se pase por parametro.
        /// </summary>
        /// <param name="n"></param>
        public void PrintNiveles(int n)
        {
            Cola <ArbolDecision <T> > nodo = new Cola <ArbolDecision <T> >();

            nodo.encolar(this);
            nodo.encolar(null);
            int NivelActual = 0;

            while (!nodo.esVacia() && NivelActual <= n)
            {
                if (nodo.tope() != null)
                {
                    if (NivelActual >= n)
                    {
                        if (nodo.tope().EsHoja())
                        {
                            Console.WriteLine("Predicciones de profundida {0} encontradas:", NivelActual);
                            Dictionary <string, int> etiquetas = (Dictionary <string, int>)nodo.tope().Dato;
                            foreach (var hoja in etiquetas)
                            {
                                //listadoHojas.Add(hoja.Key);
                                Console.WriteLine(hoja.Key + ", ");
                            }
                        }
                        else
                        {
                            Console.WriteLine("Pregunta de profundida {0} encontradas:", NivelActual);
                            Console.WriteLine(nodo.tope().Dato);
                        }
                    }

                    if (!nodo.tope().EsHoja())
                    {
                        nodo.encolar(nodo.tope().HijoIzquierdo);
                        nodo.encolar(nodo.tope().HijoDerecho);
                        nodo.encolar(null);
                    }

                    nodo.desencolar();
                }
                else
                {
                    nodo.desencolar();
                    NivelActual++;
                }
            }
        }