Принцип работы адаптивного сжатия Хаффмана заключается в том, что компрессор и декомпрессор начинают работать с «пустого» дерева Хаффмана, а потом модифицируют его по мере чтения и обработки символов. 1
Суть адаптивного алгоритма состоит в том, что при каждом сопоставлении символу кода изменяется внутренний ход вычислений так, что в следующий раз этому же символу может быть сопоставлен другой код, то есть происходит адаптация алгоритма к поступающим для кодирования символам. 4
В начале кодер строит пустое дерево Хаффмана, то есть никакому символу коды ещё не присвоены. 1 Поэтому первый символ просто записывается в выходной поток в незакодированной форме. 1 Затем этот символ помещается в дерево и ему присваивается код, например, 0. 1
После этого кодируется следующий символ во входном потоке, и если этот символ встретился впервые, то он также записывается в выходной поток в виде 8-битного ASCII символа, и помещается в дерево Хаффмана, где ему присваивается определённый код в соответствии с его текущей частотой появления, равной 1. 1
По мере того как поступают символы на вход кодера, происходит подсчёт числа их появления и их количества и в соответствии с этой информацией выполняется перестройка дерева Хаффмана. 1