Дерево не удаляется

218
16 ноября 2017, 04:38
void DeleteTree(Tree*root)
{
        while (root != NULL) {
            DeleteTree(root->left);
            DeleteTree(root->right);
            root = NULL;
            delete root;
        }
Answer 1

Посмотрите на свои последние две строки. Вначале Вы зануляете указатель, а потом удаляете данные по нему, то есть, по null. По хорошему, их нужно переставить местами. Ну и while не нужен.

void DeleteTree(Tree*root)
{
    if(root != NULL) {
        DeleteTree(root->left);
        DeleteTree(root->right);
        delete root;
        root = NULL;
    }
}
Answer 2

Должно быть так:

void DeleteTree(Tree*root)
{
    if (root != NULL) 
    {
       DeleteTree(root->left);
       DeleteTree(root->right);
       delete root;
    }
}

А вы сначал обнуляете root, а потом удаляете его.

Answer 3

Надеюсь, это очепятка?

root = NULL;
delete root;

И вы все же сначала удаляете root (освобождая память), а у потом обнуляете, а не пытаетесь удалять указатель NULL?

READ ALSO
помогите! Написание кода по масивам на Borland C++ Builder 6.0 [требует правки]

помогите! Написание кода по масивам на Borland C++ Builder 6.0 [требует правки]

В одномерном масиве, что состоит из n целих елементов что вводяться с клавиатуры, вычислить суму модулей елементов масива разположеных до максимального...

235
Вызов функций в функции С++

Вызов функций в функции С++

В этом коде использую структурыКод написаный без структур отработал с подобным вызовом:

246
Организация кода js

Организация кода js

Есть функция :

313
Можно ли в Sass использовать & на прародителя?

Можно ли в Sass использовать & на прародителя?

Можно ли вмеcтоwrapper_button использовать амперсанд?

231