Кодирование Хаффмана - это метод кодирования символов в зависимости от их частоты. Каждой букве назначается двоичная строка переменной длины, например 0101 или 111110, где более короткие длины соответствуют более общим буквам. Для достижения sh этого двоичного дерева строится такое, что путь от root к любому листу однозначно отображается на символ. При обходе пути спуск к левому дочернему элементу соответствует 0 в префиксе, тогда как спуск вправо соответствует 1.
Вот пример дерева (обратите внимание, что только у конечных узлов есть буквы):
*
/ \
* *
/ \ / \
* a t *
/ \
c s
В этой кодировке кошки будут представлены как 0000110111.
Учитывая словарь частот символов, постройте дерево Хаффмана и используйте его для определения соответствия между символами и их закодированными двоичными строками.