Example #1
0
        private bool CreateHuffmanTree()
        {
            Logger.LogDebug("■CreateHuffmanTree:" + codewordLengths.Length);

            huffmanRoot = new HuffmanNode();

            for (int i = 0; i < codewordLengths.Length; i++)
            {
                if (codewordLengths[i] > 0)
                {
                    if (huffmanRoot.SetNewValue(codewordLengths[i], i) == false)
                    {
                        Logger.LogError("■huffmanRoot.SetNewValue Error");

                        return(false);
                    }
                }
                else
                {
                    //Logger.LogError( "■EntryLengths Zero" );
                }
            }

            return(true);
        }
Example #2
0
        public bool SetNewValue(int aDepth, int aValue)
        {
            if (GetFullFlag() == true)
            {
                return(false);
            }

            if (aDepth == 1)
            {
                if (o0 == null)
                {
                    o0 = new HuffmanNode(this, aValue);

                    return(true);
                }

                if (o1 == null)
                {
                    o1 = new HuffmanNode(this, aValue);

                    return(true);
                }
            }
            else
            {
                if (o0 == null)
                {
                    o0 = new HuffmanNode(this);
                }

                if (o0.SetNewValue(aDepth - 1, aValue) == true)
                {
                    return(true);
                }

                if (o1 == null)
                {
                    o1 = new HuffmanNode(this);
                }

                if (o1.SetNewValue(aDepth - 1, aValue) == true)
                {
                    return(true);
                }
            }

            return(false);
        }