Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Освобождение памяти, удаление бинарного дерева - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Почему может не запускаться .exe файл? http://www.cyberforum.ru/cpp-beginners/thread909826.html
Всем привет! Такой вопрос немного странный. Я написал программу. Она компилируется и всё работает, всё что надо выводится - вопросов нет. (Всё - в режиме дебаг). Далее я захожу в директорию...
C++ Передача указателя структуры в функцию, ошибка на этапе выполнения Помогите разобратся в чем ошибка. Ошибка вылетает на этапе выполнения. struct book { char * name; char price; static unsigned int CELL; };unsigned int book::CELL = 0; void book_init... http://www.cyberforum.ru/cpp-beginners/thread909791.html
Поменять элементы массива местами(код) C++
Есть задание найти по главной и второстепенной диагоналям массива максимальный и минимальный элементы и поменять их местами. Код получается, если делать через swap (то что в комменте), но я хочу...
C++ Отсортировать элементы файла input и вывести их в файл output
Здравствуйте. Помогите решить. Есть файл input, в котором элементы располагаются столбцом. Нужно отсортировать элементы файла input и вывести их в файл output.
C++ Visual Studio http://www.cyberforum.ru/cpp-beginners/thread909756.html
Только что установил этот мега Визуал С++ написал "элементарную" программу и вылетает ошибка при компиляции типа "не найден исполняющий файл" переустанавливал все тоже :С
C++ По каким параметрам C++ превосходит Java? Здравствуйте. Хочу узнать по каким параметрам C++ превосходит Java. Чем больше укажете, тем лучше. Спасибо. подробнее

Показать сообщение отдельно
simkara26
2 / 2 / 0
Регистрация: 26.05.2013
Сообщений: 34
23.06.2013, 18:08
В каждом узле бинарного дерева должна быть пара указателей на левое (left) и правое (right) поддеревья (в "листьях" они нулевые). Освобождение всего дерева можно сделать с помощью следующей простой рекурсивной функции (TREE – структура узла дерева)

C++
1
2
3
4
5
void FreeTree( TREE * tree ) { 
    if (tree->left)   FreeTree(*tree->left); 
    if (tree->right)  FreeTree(*tree->right); 
    delete tree; 
}
Этой же функцией легко освободить любое из поддеревьев и любой "лист", передав ей указатель на него... Надо только в этих случаях не забывать обнулять указатели освобожденных элементов
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru