Удаление узла дерева - C (СИ)
Формулировка задачи:
Разбираюсь с удалением в дереве, начал с удаления листа и сразу же столкнулся с проблемой
Итак, я ищу в дереве элемент, который я хочу удалить.
Потом я его удаляю и приравниваю Ф-ция удаления:
NULL
Спустя некоторое время до меня дошло, что я именно удаляю элемент, а мне же нужно удалять и указатель на него. Вот как это сделать я как раз таки не понимаю. Структура:struct Tree
{
int key;
Tree *pPoint[4];
};void del(Tree*&root)
{
if (root == NULL)
return;
int key, k = 0;
Tree *adds, *tmp;
printf("Введите ключ, по которому удаляется элемент: ");
scanf("%d", &key);
adds = search(root, key);
if (adds)
{
delete adds;
adds = NULL;
}
else
printf("NOT OK");
}Решение задачи: «Удаление узла дерева»
textual
Листинг программы
if (adds)
* * {
* * * * delete adds;
* * * * adds = NULL;
* * }
Объяснение кода листинга программы
В представленном коде выполняется удаление указателя на узел дерева. Список действий следующий:
- Проверяется значение переменной
addsна предмет того, является ли оно ненулевым. - Если
addsне равно нулю, то выполняются следующие действия: a. Указательaddsудаляется. b. Значениеaddsустанавливается равным нулю. - Если
addsравно нулю, то никаких дополнительных действий не выполняется.