Удаление узла дерева - 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;
* * }

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

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

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

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


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

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

5   голосов , оценка 3.8 из 5
Похожие ответы