Объединение узлов из проблем с указателем минимальной кучи - PullRequest
0 голосов
/ 09 апреля 2020

Итак, я пытаюсь объединить узлы из моей минимальной кучи, пока в моей минимальной куче не останется только один узел. Например:

Минимальная куча: 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 () добавляет узел в кучу **

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...