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