Итак, я пытаюсь объединить узлы из моей минимальной кучи, пока в моей минимальной куче не останется только один узел. Например:
Минимальная куча: A B C D
Как это должно выглядеть потом: ABCD
После объединения A и B мы получаем AB. Затем AB с C, поэтому мы получаем AB C, затем AB C с D, поэтому последний узел - ABCD. Вот моя структура узлов:
struct Node {
std::string letter;
int frequency;
Node* leftPtr;
Node* rightPtr;
};
, а вот мой код, который объединяет узлы
while (heapSize != 1) {
left = peek ();
right = peek ();
top.letter = left.letter + right.letter;
top.frequency = left.frequency + right.frequency;
top.leftPtr = &left;
top.rightPtr = &right;
addElement(top);
}
Допустим, я хочу напечатать узел 'AB', я бы сказал
cout << heap[0].leftPtr->letter << endl;
Это работает, однако,
cout << heap[0].leftPtr->leftPtr->letter << endl;
все еще возвращает мне AB, и я не уверен почему. Это должно дать A, а не AB.
** Примечание * Peek () возвращает верхний элемент из минимальной кучи, а addElement () добавляет узел в кучу **