Никаких чужих исходников не смотрел. Пишу как я сохранял архивный файл с использованием Хаффменовского кодирования:
Записываем имя файла, кол-во неполных бит в последнем байте, дерево, собственно зажатые данные. Структура для дерева ссылочная или, действительно, просто массив (довольно ограниченно конечно и неэкономно).
Только вот что непонятного в процессе раскодирования??
Смотрим ветки по дереву и выдаем данные... Если ты внимательно читал доку, то там трудно не понять...