コード例 #1
0
        private void GenerarListaNodosHoja(HuffmanNode raiz)
        {
            if (raiz == null)
            {
                return;
            }
            else if (raiz.isLeaf)
            {
                ListaHojas.Add(raiz);
                return;
            }

            GenerarListaNodosHoja(raiz.leftTree);
            GenerarListaNodosHoja(raiz.rightTree);
        }
コード例 #2
0
        private HuffmanNode AsignarCodigosPrefijo(string codigoprefijo, HuffmanNode hnNodoActual)
        {
            if (hnNodoActual == null)
            {
                return(null);
            }
            else if (hnNodoActual.leftTree == null && hnNodoActual.rightTree == null)
            {
                hnNodoActual.code = codigoprefijo;
                return(hnNodoActual);
            }

            hnNodoActual.leftTree  = AsignarCodigosPrefijo(codigoprefijo + "0", hnNodoActual.leftTree);
            hnNodoActual.rightTree = AsignarCodigosPrefijo(codigoprefijo + "1", hnNodoActual.rightTree);

            return(hnNodoActual);
        }
コード例 #3
0
        public void GenerarArbol(List <HuffmanNode> ListaCaracteres)
        {
            while (ListaCaracteres.Count > 1)
            {
                ListaCaracteres.Sort();
                HuffmanNode hnDerecho = ListaCaracteres[0];
                ListaCaracteres.RemoveAt(0);
                HuffmanNode hnIzquierdo = ListaCaracteres[0];
                ListaCaracteres.RemoveAt(0);

                HuffmanNode nAux = new HuffmanNode();
                nAux = nAux.CrearNodoPadre(hnDerecho, hnIzquierdo);
                nAux.rightTree.parentNode = nAux;
                nAux.leftTree.parentNode  = nAux;

                ListaCaracteres.Add(nAux);
            }

            hnRaiz = AsignarCodigosPrefijo("", ListaCaracteres[0]);
            GenerarListaNodosHoja(hnRaiz);
        }