Я создал программу, которая создает дерево Хаффмана, заполненное узлами символов ascii, которые читаются из текстового файла, а также количество времени, которое они появляются в текстовом файле (частота).Кроме того, он создает уникальные коды для каждого прочитанного символа на основе частоты.
Моя проблема: я не уверен, как получить массив 'code' в моей функции Хаффмана, чтобы он обновлялся при вызове кода, сгенерированного моей функцией traverse.в настоящее время каждый элемент в массиве 'code' заполнен пустой строкой.
Вся помощь приветствуется, мой код в отношении двух функций:
функция перемещения
void traverse(string code = "") const {
if (child0) {
child0->traverse(code + '0');
child1->traverse(code + '1');
}
else {
cout << " " << value << " ";
cout << weight;
cout << " " << code << endl;
}
}
функция Хаффмана
void huffman(string code[256], const unsigned long long freq[256]) {
priority_queue < node > q;
for (unsigned i = 0; i < 256; i++) {
if (freq[i] == 0) {
code[i] = "";
}
}
for (int i = 0; i < 256; i++)
if (freq[i])
q.push(node(i, freq[i]));
while (q.size() > 1) {
node *child0 = new node(q.top());
q.pop();
node *child1 = new node(q.top());
q.pop();
q.push(node(child0, child1));
}
cout << "CHAR FREQUENCY HUFFMAN CODE" << endl;
q.top().traverse();
}