void DeleteTree(Tree*root)
{
while (root != NULL) {
DeleteTree(root->left);
DeleteTree(root->right);
root = NULL;
delete root;
}
Посмотрите на свои последние две строки. Вначале Вы зануляете указатель, а потом удаляете данные по нему, то есть, по null. По хорошему, их нужно переставить местами. Ну и while не нужен.
void DeleteTree(Tree*root)
{
if(root != NULL) {
DeleteTree(root->left);
DeleteTree(root->right);
delete root;
root = NULL;
}
}
Должно быть так:
void DeleteTree(Tree*root)
{
if (root != NULL)
{
DeleteTree(root->left);
DeleteTree(root->right);
delete root;
}
}
А вы сначал обнуляете root, а потом удаляете его.
Надеюсь, это очепятка?
root = NULL;
delete root;
И вы все же сначала удаляете root (освобождая память), а у потом обнуляете, а не пытаетесь удалять указатель NULL?
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости