示例#1
0
 public NodoHuffman(decimal Prioridad, string Simbolo)
 {
     simbolo     = Simbolo;
     prioridad   = Prioridad;
     derecho     = null;
     izquierdo   = null;
     rutateorica = 0;
 }
示例#2
0
        public bool eshoja(NodoHuffman encuestion)
        {
            bool retornado = false;

            if (encuestion.izquierdo == null && encuestion.derecho == null)
            {
                retornado = true;
            }
            else
            {
            }
            return(retornado);
        }
示例#3
0
        public void generarlistarecursivo(NodoHuffman encuestion)
        {
            bool esHoja = eshoja(encuestion);

            if (esHoja)
            {
                nodoshoja.Add(encuestion);
            }
            else
            {
                generarlistarecursivo(encuestion.izquierdo);
                generarlistarecursivo(encuestion.derecho);
            }
        }
示例#4
0
 public void generararbol()
 {
     while (nodosarbol.Count > 1)
     {
         nodosarbol.Sort();
         decimal     nprioridad = nodosarbol[0].prioridad + nodosarbol[1].prioridad;
         NodoHuffman aux1       = new NodoHuffman(nprioridad, "");
         aux1.izquierdo = nodosarbol[0];
         aux1.derecho   = nodosarbol[1];
         nodosarbol.RemoveAt(0);
         nodosarbol.RemoveAt(0);
         nodosarbol.Add(aux1);
     }
     raiz = nodosarbol[0];
 }
示例#5
0
        public void seteorecursivo(NodoHuffman encuestion)
        {
            bool condicion = eshoja(encuestion);

            if (condicion)
            {
            }
            else
            {
                encuestion.izquierdo.altura = encuestion.altura + 1;
                encuestion.derecho.altura   = encuestion.altura + 1;
                seteorecursivo(encuestion.derecho);
                seteorecursivo(encuestion.izquierdo);
            }
        }
示例#6
0
        public void crearrecrsivo(NodoHuffman encuestion)
        {
            bool necesito = eshoja(encuestion);

            if (!necesito)
            {
                encuestion.corregirruta();
                encuestion.izquierdo.rutateorica = encuestion.rutateorica * 2;
                encuestion.derecho.rutateorica   = (encuestion.rutateorica * 2) + 1;
                crearrecrsivo(encuestion.izquierdo);
                crearrecrsivo(encuestion.derecho);
            }
            else
            {
                encuestion.corregirruta();
            }
        }
示例#7
0
        public int CompareTo(object obj)
        {
            if (obj == null)
            {
                return(1);
            }

            NodoHuffman otherNodoDato = obj as NodoHuffman;

            if (otherNodoDato != null)
            {
                return(this.prioridad.CompareTo(otherNodoDato.prioridad));
            }
            else
            {
                throw new ArgumentException("Object is not a NodoDato");
            }
        }
示例#8
0
        public ArbolHuffman(string contenido)
        {
            this.contenido = contenido;
            ListaDeSimbolos nsimbolo = new ListaDeSimbolos(contenido);

            nsimbolo.contadordeocurrencias();
            List <string>  Simbolos   = nsimbolo.simbolos;
            List <decimal> ocurrencia = nsimbolo.prioridad;

            simbolos             = Simbolos;
            ocurrenciaporcentual = ocurrencia;
            for (int i = 0; i < simbolos.Count; i++)
            {
                NodoHuffman aux = new NodoHuffman(ocurrenciaporcentual[i], simbolos[i]);
                nodosarbol.Add(aux);
            }
            generararbol();
            seteoaltura();
            crearruta();
            generarlista();
            generardiccionarios();
        }