Я пишу инструмент кодирования/декодирования Хаффмана и ищу эффективный способ хранения дерева Хаффмана, созданного для хранения внутри выходного файла.
В настоящее время я реализую две разные версии.
- Этот файл считывает весь файл в символ памяти по символу и строит частотную таблицу для всего документа. Это потребовало бы вывода дерева только один раз, и, следовательно, эффективность не такая большая, как если бы входной файл был небольшим.
- Другим методом, который я использую, является чтение фрагмента данных, размером около 64 килобайт и запуск частотного анализа, создание дерева и его кодирование. Однако в этом случае перед каждым куском мне нужно будет вывести свое частотное дерево, чтобы декодер смог перестроить свое дерево и правильно декодировать закодированный файл. Именно здесь эффективность возникает, поскольку я хочу сэкономить как можно больше места.
В моих поисках до сих пор я не нашел хороший способ хранения дерева как можно меньше места, я надеюсь, что сообщество StackOverflow поможет мне найти хорошее решение!