deadrime
@deadrime
Fullstack web developer

Как пройтись по дереву, создавая код для каждого листа (символа)?

Пытаюсь написать алгоритм Хаффмана для текстового файла. Пользовался вот этой статьёй на хабре.
Дерево получилось создать - проверял на фразе из статьи - все работает правильно.
Но завис на создании кода для каждого символа - не совсем понимаю как "просто пройтись по дереву, и для каждого перехода добавлять 0, если мы идём влево, и 1 — если направо".
Подскажите, пожалуйста, как реализовать...

Ну то есть я примерно так понимаю - во время рекурсивного обхода , если встретили лист tree->left==NULL && tree->right==NULL, то выводить символ и его код и делать return, но вот как запоминать код - не совсем себе представляю...
  • Вопрос задан
  • 288 просмотров
Решения вопроса 1
2ord
@2ord
Нули и единицы "сохраняются" в байтах. Туда и сохраняй при помощи битовой маски. Заполнен целый октет одного байта - переходишь к заполнению следующего. А сами байты накапливаешь в буфер и скидываешь на диск по заполнению буфера.
Сам не кодировал по Хаффману, но представляю себе это именно так.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы