Что произойдет, если мы будем непоследовательны при создании дерева Хаффмана? - PullRequest
3 голосов
/ 09 апреля 2020

Почему мы не можем быть непоследовательными при создании дерева Хаффмана, т. Е. Когда-то сделать узел более высокой частоты левым, а иногда правым, как я знаю, в соответствии с соглашением, мы должны заранее решить, будем ли мы назначать больший узел левому или правому дочернему элементу и мы должны поддерживать этот порядок. Почему это нужно исправить?

Случайное расположение влево или вправо не влияет на вес нового узла или высоту, поэтому ничего не меняется, верно?

1 Ответ

1 голос
/ 09 апреля 2020

Правильно.

Коды 00, 11, 10 и 01 имеют одинаковый вес с точки зрения кодирования Хаффмана. Таким образом, размещение узла слева против справа изменит код, но не изменит длину кода Хаффмана.

Цель с деревом Хаффмана состоит в том, чтобы придумать кодировку, наиболее частую Термин имеет наименьшую длину кода. Поместить больший узел слева или справа несущественно.

...