Рекурсивное построение фрактального дерева Хаффмана
Python
Сложный
recursion
Задача «Рекурсивное построение фрактального дерева Хаффмана»
Дана строка из символов латинского алфавита (строчные буквы). Необходимо построить фрактальное дерево Хаффмана: для каждого символа вычислить его частоту, затем рекурсивно построить дерево, где каждый узел содержит сумму частот левого и правого поддеревьев, а листья содержат символы. На каждом шаге рекурсии нужно разделить список символов на две части так, чтобы сумма частот в левой части была максимально близка к сумме частот в правой части (жадный алгоритм). Вернуть строку, представляющую дерево в виде префиксной записи: для узла — 'F{сумма}', для листа — 'L{символ}'. Рекурсия обязательна.
Формат ввода
Одна строка, состоящая из строчных латинских букв (длина от 1 до 100).
Формат вывода
Строка — префиксная запись дерева без пробелов.
Примеры
Пример 1
ВВОД
1
42
ВЫВОД
L1
Пример 2
ВВОД
nil nil nil
ВЫВОД
F11F6LnLiF5LlL
Пример 3
ВВОД
abc
ВЫВОД
F3LaF2LbLc
Пример 4
ВВОД
0 1 2
ВЫВОД
F5F3L0L F2L1L2
main.py