Я пытаюсь реализовать кодирование Хаффмана и не могу понять, как кодировать символ с помощью дерева без генерации таблицы поиска.Чего я не хочу делать, так это генерировать карту каждого символа в его закодированную строку битов.Я пытаюсь написать метод, который берет корень дерева Хаффмана и символа и выплевывает правильный код.
Я написал следующий код, который работает неправильно.Проблема в том, что я не знаю, как заставить его остановиться после получения правильного результата.Он продолжает добавлять код после достижения правильного конечного узла.
string lookup(HuffNode* root, char c, string prevCode, string direction){
string currentCode = prevCode + direction;
if(!root->isLeaf()){
currentCode = lookup(root->getLeft(), c, currentCode, "0");
currentCode = lookup(root->getRight(), c, currentCode, "1");
}else{
if(root->getChar() == c){
return currentCode;
}else{
return prevCode;
}
}
return currentCode;
}
string encodeChar(HuffNode* trie, char c){
return lookup(trie, c, "", "");
}
Каков будет правильный способ получить кодировку символа из дерева?