Пример #1
0
        public static TrieNode Read(Reader reader)
        {
            if (reader.ReadBit())
            {
                var @byte = reader.ReadByte();
                return(TrieNode.CreateLeaf(@byte, 0));
            }

            return(TrieNode.CreateInnerNode(Read(reader), Read(reader)));
        }
Пример #2
0
        public static MinPriorityQueue <TrieNode> FromFrequencyTable(long[] frequencyTable)
        {
            var minQueue = new MinPriorityQueue <TrieNode>(2 * CodeTable.Size - 1);

            for (var i = 0; i < frequencyTable.Length; i++)
            {
                if (frequencyTable[i] > 0)
                {
                    var node = TrieNode.CreateLeaf((byte)i, frequencyTable[i]);
                    minQueue.Insert(node);
                }
            }

            return(minQueue);
        }