Удаление узла дерева - 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
равно нулю, то никаких дополнительных действий не выполняется.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д