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))); }
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); }