Удаление вершины дерева - C (СИ)

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

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

алгоритм почему то не работает... программа просто выкидывает, синтаксических ошибок нет
void tree_delete (tree *r)
{
    if (!(r->l)&&!(r->r))
    {
        delete r;
        r=NULL;
    }
    else
    {
        if (!r->r)
        {
            tree *p=r;
            r=r->l;
            delete p;
        }
        else
        {
            if (!r->l)
            {
                tree *p=r;
                r=r->r;
                delete p;
            }
            else
            {
                tree *m=tree_max(r->l);
                r->i=m->i;
                tree_delete (m);
            }
        }
    }
}
 
//Удаление вершины с максимальным значением из левого поддерева
tree *tree_max(tree *r)
{
    while (r->r)
        r=r->r;
    return r;
}
Заранее спасибо за помощь)

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

textual
Листинг программы
if (!r->r&&!r->l)
{
r=NULL;
delete r;
}

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

В данном коде выполняется проверка условия, при котором рекурсивно вызывается функция для удаления вершины дерева. Если условие не выполняется, то значение переменной r присваивается значению NULL, после чего вызывается функция delete для освобождения памяти.

  1. Проверка условия: if (!r->r&&!r->l)
  2. Вызов функции для удаления вершины дерева (рекурсивный вызов): r=NULL;
  3. Освобождение памяти: delete r;

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


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

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

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