Создайте дерево Хаффмана с четырьмя символами вместо двоичного
Привет всем. Я разрабатываю двоичное дерево для алгоритма Хаффмана для кодирования строки, но в своей диссертации я хочу закодировать строку для таких символов, как A,B,C,D вместо 0,1, я хочу создать три с четырьмя символами.
в алгоритме Хаффмана сначала мы выбираем последние два символа и создаем дерево, но я хочу выбрать последние четыре символа и создать узел и продолжить алгоритм таким образом, и, наконец, создать дерево
Вот код для создания двоичного дерева с 0,1:
private function fillDictionary(&$dictionary, $data, $value = '')
{
if (!is_array($data[0][1])) {
$dictionary[$data[0][1]] = $value . '0';
} else {
$this->fillDictionary($dictionary, $data[0][1], $value . '0');
}
if (isset($data[1])) {
if (!is_array($data[1][1])) {
$dictionary[$data[1][1]] = $value . '1';
} else {
$this->fillDictionary($dictionary, $data[1][1], $value . '1');
}
}
}
Суть моего вопроса такова: вместо 0,1 создайте дерево с четырьмя символами A,B,C,D и закодируйте данные с ними. Пожалуйста, помогите мне завершить мой тезис, спасибо:)