public static List <string> GetCode(HuffmanTree mainTree) { ListOfCode = new List <string>(); TreeRunning(mainTree); return(ListOfCode); }
static void Main(string[] args) { List <double> Frequences = new List <double>(); Console.WriteLine("Введите частоты символов."); Console.WriteLine("Когда сумма элементов дойдет до 1, ввод остановится"); while (true) { double current; while (!double.TryParse(Console.ReadLine(), out current) || current < 0) { Console.WriteLine("Ошибка ввода, введите вещественное число не больше 1 и не меньше 0."); } Frequences.Add(current); double sum = GetListSum(Frequences); if (sum > 1) { Console.WriteLine("Сумма частот превысила 1. Введите частоты заново."); Frequences = new List <double>(); // если введённые числа в сумме превысили единицу } if (sum == 1) { Console.WriteLine("Ввод завершен."); break; } } Console.WriteLine("\nВведенные частоты:"); Frequences.Sort(); foreach (var t in Frequences) { Console.WriteLine(t); } List <HuffmanTree> treeList = new List <HuffmanTree>(); for (int i = 0; i < Frequences.Count; i++) { treeList.Add(new HuffmanTree(Frequences[i])); } while (treeList.Count > 1) { HuffmanTree first = treeList[0]; HuffmanTree second = treeList[1]; treeList[1] = new HuffmanTree(first.Value + second.Value); treeList[1].right = first; treeList[1].left = second; treeList.RemoveAt(0); treeList.Sort(); } List <string> HuffmanCode = Code.GetCode(treeList[0]); Console.WriteLine("\nКод: "); foreach (var t in HuffmanCode) { Console.WriteLine(t); } Console.ReadLine(); }