Я пытаюсь сделать пост-почтовый обход дерева.Узлы дерева имеют данные типа int и 2 указателя: один слева и один справа.У меня есть функция, которая дает мне голову дерева.Что я делаю: я создаю временный узел и устанавливаю его в качестве главы.То, что я хочу сделать, это итерация к дереву, пока этот темп не станет nullptr.Таким образом, в каждой итерации я проверяю, есть ли правый или левый указатель на узел, и соответственно устанавливаю темп.Если узел не имеет левого или правого указателей, я получаю значение узла и добавляю его в вектор.Затем мне нужно удалить этот узел (и вот в чем проблема) и снова сделать временный указатель на корень дерева.Моя проблема в том, что я не могу удалить последний узел.Вот мой код.
void postOrder(Node* root)
{
vector<int> result;
Node* tmp = nullptr;
tmp = root;
int val = 0;
while ((tmp != nullptr)) {
if (tmp->left != nullptr) {
tmp = tmp->left;
}
else if (tmp->right != nullptr) {
tmp = tmp->right;
}
else {
val = tmp->data;
cout << val;
result.push_back(val);
*tmp = NULL;
tmp = root;
}
}
for (auto& e : result)
cout << e << " ";
}
Я пытаюсь установить в null то, на что указывает этот временный указатель, а затем снова установить его на голову, но это не сработало;