/// <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); } }
internal static ICollection <HuffmanNode> AddSorted(this ICollection <HuffmanNode> collection, HuffmanNode element) { collection.Add(element); return(collection .OrderBy(x => x.Probability) .ToList()); }
/// <summary> /// /// </summary> /// <param name="model"></param> public static void Huffman(Model model) { HuffmanNode huffmanTree = ConstructHuffmanTree(model.GetHuffmanLeafs()); ConstructHuffmanCode(model, huffmanTree); }