Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="model"></param>
        /// <param name="node"></param>
        /// <param name="code"></param>
        private static void ConstructHuffmanCode(Model model, HuffmanNode node, string code = "")
        {
            var left  = "0";
            var right = "1";

            if (node.IsLeaf)
            {
                model.AddHuffmanCode(node.Symbol, code);
            }
            else
            {
                ConstructHuffmanCode(model, node.Left, code + left);
                ConstructHuffmanCode(model, node.Right, code + right);
            }
        }
Пример #2
0
 internal static ICollection <HuffmanNode> AddSorted(this ICollection <HuffmanNode> collection, HuffmanNode element)
 {
     collection.Add(element);
     return(collection
            .OrderBy(x => x.Probability)
            .ToList());
 }
Пример #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="model"></param>
        public static void Huffman(Model model)
        {
            HuffmanNode huffmanTree = ConstructHuffmanTree(model.GetHuffmanLeafs());

            ConstructHuffmanCode(model, huffmanTree);
        }