Удаление узла дерева - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Разбираюсь с удалением в дереве, начал с удаления листа и сразу же столкнулся с проблемой Итак, я ищу в дереве элемент, который я хочу удалить. Потом я его удаляю и приравниваю

NULL

Спустя некоторое время до меня дошло, что я именно удаляю элемент, а мне же нужно удалять и указатель на него. Вот как это сделать я как раз таки не понимаю. Структура:
Листинг программы
  1. struct Tree
  2. {
  3. int key;
  4. Tree *pPoint[4];
  5. };
Ф-ция удаления:
Листинг программы
  1. void del(Tree*&root)
  2. {
  3. if (root == NULL)
  4. return;
  5. int key, k = 0;
  6. Tree *adds, *tmp;
  7. printf("Введите ключ, по которому удаляется элемент: ");
  8. scanf("%d", &key);
  9. adds = search(root, key);
  10. if (adds)
  11. {
  12. delete adds;
  13. adds = NULL;
  14. }
  15. else
  16. printf("NOT OK");
  17. }

Решение задачи: «Удаление узла дерева»

textual
Листинг программы
  1. if (adds)
  2. * * {
  3. * * * * delete adds;
  4. * * * * adds = NULL;
  5. * * }

Объяснение кода листинга программы

В представленном коде выполняется удаление указателя на узел дерева. Список действий следующий:

  1. Проверяется значение переменной adds на предмет того, является ли оно ненулевым.
  2. Если adds не равно нулю, то выполняются следующие действия: a. Указатель adds удаляется. b. Значение adds устанавливается равным нулю.
  3. Если adds равно нулю, то никаких дополнительных действий не выполняется.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы