В книге я использую для моего класса (и от того, что я видел от нескольких других мест), кажется, что алгоритм создавая дерево Хаффмана происходит отХаффман реализации дерева с использованием minheap
(1) Построение minheap, основанного на частоте каждого символа в любом файле или строке, считывается.
(2) Отбрасывание двух наименьших значений из minheap и объединение их весов в новый узел.
(3) Повторная установка нового узла обратно в тот же самый миниатюрный.
Я смущен о шаге 3. Большинство деревьев хаффмана, которые я видел, имеют атрибуты, более похожие на максимальную кучу, чем минеап (хотя они не являются полными деревьями). То есть корень содержит максимальный вес (или комбинацию весов), в то время как все его дети имеют меньшие веса. Как эта реализация дает дерево хаффмана, когда объединенные узлы возвращаются в миниатюру? Некоторое время я боролся с этим.
Аналогичный вопрос уже размещен здесь (с той же книге, как мне): I don't understand this Huffman algorithm implementation
В случае, если вы хотите, чтобы увидеть точную функцию, описанную в (3).
Спасибо за помощь!
Корень дерева будет последней вещью, которая будет создана, поэтому она будет иметь максимальный вес. –