示例#1
0
        public void recorridoPorNiveles()
        {
            Cola <ArbolBinario <T> > c = new Cola <ArbolBinario <T> >();
            ArbolBinario <T>         arbolAux;

            //encolamos Arbol
            c.encolar(this);
            while (c.esVacio())
            {
                //desencolamos arbol
                arbolAux = c.desencolar();

                //imprimimos datos de la raiz del arbol
                Console.Write(arbolAux.getDatoRaiz() + " ");

                //si tiene hijo izquierdo
                if (arbolAux.getHijoIzquierdo().esVacio())
                {
                    ;
                }

                //lo encolamos
                c.encolar(arbolAux.getHijoIzquierdo());

                //si tiene hijo derecho
                if (!arbolAux.getHijoDerecho().esVacio())
                {
                    ;
                }

                //lo encolamos
                c.encolar(arbolAux.getHijoDerecho());
            }
        }
示例#2
0
        public void recorridoEntreNiveles(int n, int m)
        {
            if (!this.esVacio())
            {
                Cola <ArbolBinario <T> > c = new Cola <ArbolBinario <T> >();

                //variable auxiliar
                ArbolBinario <T> arbolAux;

                //contador
                int contNivel = 0;

                //encolamos arbol
                c.encolar(this);

                //encolamos separador de niveles
                c.encolar(null);

                while (!c.esVacia())
                {
                    //desencolamos arbol
                    arbolAux = c.desencolar();
                    if (arbolAux == null)
                    {
                        if (contNivel >= n && contNivel <= m)
                        {
                            Console.Write(arbolAux.getDatoRaiz() + " ");
                        }
                    }
                    //si tiene hhijo izquierdo
                    if (!arbolAux.getHijoIzquierdo().esVacio())
                    {
                        //lo encolamos
                        c.encolar(arbolAux.getHijoIzquierdo());

                        //si tiene hijo derecho
                        if (!arbolAux.getHijoDerecho().esVacio())
                        {
                            ;
                        }
                        //lo encolamos
                        c.encolar(arbolAux.getHijoDerecho());
                    }
                    else
                    {
                        contNivel++;
                        if (!c.esVacio())
                        {
                            ;
                        }
                        c.encolar(null);
                    }
                }
            }
        }