(MIKIさんのコードちゃんとみれてないので説明だけ) ハフマン符号化のアルゴリズムそのものはwikipediaにあるとおりで、 補足するなら「文章中に出てくる回数が多い文字(プチコンの1文字=16bit固定(UTF-16))を、可変ビット(文字の種類によって1bitから数bitに変化)に割り当てて、最初の文章より短くする」な感じです。 同じ文字が沢山繰り返されて1文字16bit使ってる文章があれば、その文字が1bitや2bitになればデータ量が少なくなるので圧縮できるという感じです。 可変bitに変換された結果は2進数のバイナリデータでしかなくて、 これを元の文章に戻すために、どの可変bitがどの文字に対応しているかの一覧をツリーにしたのがハフマンツリー 文字も画像データ1ドットも16bitや32bitのデータなので、同じように画像をハフマン符号化すると圧縮できるという仕組みです。