Дан набор символов и их веса (обычно пропорциональные вероятностям). Найдите двоичный код без префиксов (набор кодовых слов) с минимальной ожидаемой длиной кодового слова.

Ссылка: https://www.hackerrank.com/challenges/tree-huffman-decoding/problem

Мыслительный процесс:

Просто следуйте инструкциям и используйте двоичный код для извлечения символьной информации. Если 0, мы перемещаемся влево, а если 1, мы перемещаемся вправо. Если дочерних элементов больше нет, мы считываем значение листа и добавляем его в строку. Нам нужно будет сбросить текущий узел до корневого, чтобы мы могли прочитать следующий символ. Вот код:

Решение Python 3:

Сложность:

время: 0 (n)

память: о (п)

Комментарии и предложения приветствуются!