私がクラスで使用している本 (および他のいくつかの場所から見たものから) では、ハフマン木を作成するためのアルゴリズムは、
(1) 読み込まれているファイルまたは文字列の各文字の頻度に基づいて最小ヒープを構築します。
(2) minheap から 2 つの最小値を取り出し、それらの重みを新しいノードに結合します。
(3) 新しいノードを同じ最小ヒープに再挿入します。
ステップ 3 について混乱しています。私が見たほとんどのハフマン ツリーは、最小ヒープよりも最大ヒープに似た属性を持っています (完全なツリーではありませんが)。つまり、ルートには最大の重み (またはむしろ重みの組み合わせ) が含まれていますが、そのすべての子の重みはそれよりも小さくなっています。結合されたノードが最小ヒープに戻されるときに、この実装はどのようにハフマン ツリーを提供しますか? 私はしばらくこれに苦労してきました。
同様の質問がすでにここに投稿されています (私と同じ本で): I don't understand this Huffman algorithm implementation
(3)で説明されている正確な機能を見たい場合。
助けてくれてありがとう!