Итак, я пытаюсь написать функцию, которая помещает все значения двоичного дерева в вектор, который позже будет использоваться для его воссоздания.Но когда я пытаюсь вызвать эту функцию, я получаю сообщение об ошибке:
Error in `./bst': double free or corruption (fasttop):
Это функция, которую я использую.Сам вектор является частной переменной, содержащей узлы.size () возвращает размер дерева и работает.
void BST::swapvector()
{
Node *ptr = m_root;
while (size() != 0)
{
if (ptr->m_left != NULL) {
ptr = ptr->m_left;
} else if (ptr->m_right != NULL) {
ptr = ptr->m_right;
} else {
Node *temp = ptr;
myvector.push_back(ptr); //starting from root, we traverse until we reach the bottom and then add ptr to the vector
ptr = m_root;
delete temp; //once we're finished, we delete temp
}
}
}
Кто-нибудь знает, почему это не работает?Спасибо!