AndreySlimus: да госпади, у вас каждый лист дерева это один бит, каждая ветвь - код. Собираем для каждой ноды код при помощи смещений... снизу вверх если мне память не изменяет. Читать про логические сдвиги.
AndreySlimus: вы уже составили коды для каждого символа. Осталось "склеить" это дело все в одну строку. Я вот только не помню нужно ли там разделители для символов... насколько я помню все же они нужны.