Exemplo n.º 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());
            }
        }
Exemplo n.º 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);
                    }
                }
            }
        }
        public void recorridoPorNiveles()
        {
            Cola <ArbolBinario <T> > c = new Cola <ArbolBinario <T> >();
            ArbolBinario <T>         aux;

            c.encolar(this);
            while (!c.esVacia())
            {
                aux = c.desencolar();
                Console.Write(aux.getDatoRaiz() + " ");
                if (aux.getHijoIzquierdo() != null)
                {
                    c.encolar(aux.getHijoIzquierdo());
                }
                if (aux.getHijoDerecho() != null)
                {
                    c.encolar(aux.getHijoDerecho());
                }
            }
        }
Exemplo n.º 4
0
        public int retardoReenvio()
        {
            Cola <ArbolBinario <int> > c = new Cola <ArbolBinario <int> >();
            ArbolBinario <int>         aux;
            int retardoMax = 0;
            int retardoAux = 0;

            c.encolar(arbol);
            c.encolar(null);
            while (!c.esVacia())
            {
                aux = c.desencolar();
                if (aux == null)
                {
                    retardoMax += retardoAux;
                    retardoAux  = 0;
                    if (!c.esVacia())
                    {
                        c.encolar(null);
                    }
                }
                else
                {
                    if (aux.getDatoRaiz() > retardoAux)
                    {
                        retardoAux = aux.getDatoRaiz();
                    }
                    if (aux.getHijoIzquierdo() != null)
                    {
                        c.encolar(aux.getHijoIzquierdo());
                    }
                    if (aux.getHijoDerecho() != null)
                    {
                        c.encolar(aux.getHijoDerecho());
                    }
                }
            }
            return(retardoMax);
        }
        /*public int contarHojas()
         * {
         *      Cola<ArbolBinario<T>> c = new Cola<ArbolBinario<T>>();
         *      ArbolBinario<T> aux;
         *      int hojas = 0;
         *      c.encolar(this);
         *      while(!c.esVacia())
         *      {
         *              aux = c.desencolar();
         *              if(aux.esHoja())
         *              {
         *                      hojas++;
         *              }
         *              if(aux.getHijoIzquierdo() != null)
         *              {
         *                      c.encolar(aux.hijoIzquierdo);
         *              }
         *              if(aux.getHijoDerecho() != null)
         *              {
         *                      c.encolar(aux.hijoDerecho);
         *              }
         *      }
         *      return hojas;
         * }*/
        public void recorridoEntreNiveles(int n, int m)
        {
            Cola <ArbolBinario <T> > c = new Cola <ArbolBinario <T> >();
            ArbolBinario <T>         aux;
            int nivel = 0;

            c.encolar(this);
            c.encolar(null);
            while (!c.esVacia())
            {
                aux = c.desencolar();
                if (aux == null)
                {
                    nivel++;
                    if (!c.esVacia())
                    {
                        c.encolar(null);
                    }
                }
                else
                {
                    if (nivel >= n && nivel <= m)
                    {
                        Console.Write(aux.getDatoRaiz() + " ");
                    }
                    if (aux.getHijoIzquierdo() != null)
                    {
                        c.encolar(aux.hijoIzquierdo);
                    }
                    if (aux.getHijoDerecho() != null)
                    {
                        c.encolar(aux.hijoDerecho);
                    }
                }
            }
        }
        public bool incluye(T dato)
        {
            Cola <ArbolBinario <T> > c = new Cola <ArbolBinario <T> >();
            ArbolBinario <T>         aux;

            c.encolar(this);
            while (!c.esVacia())
            {
                aux = c.desencolar();
                if (aux.getDatoRaiz().Equals(dato))
                {
                    return(true);
                }
                if (aux.getHijoIzquierdo() != null)
                {
                    c.encolar(aux.hijoIzquierdo);
                }
                if (aux.getHijoDerecho() != null)
                {
                    c.encolar(aux.hijoDerecho);
                }
            }
            return(false);
        }