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

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

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

алгоритм почему то не работает... программа просто выкидывает, синтаксических ошибок нет
Листинг программы
  1. void tree_delete (tree *r)
  2. {
  3. if (!(r->l)&&!(r->r))
  4. {
  5. delete r;
  6. r=NULL;
  7. }
  8. else
  9. {
  10. if (!r->r)
  11. {
  12. tree *p=r;
  13. r=r->l;
  14. delete p;
  15. }
  16. else
  17. {
  18. if (!r->l)
  19. {
  20. tree *p=r;
  21. r=r->r;
  22. delete p;
  23. }
  24. else
  25. {
  26. tree *m=tree_max(r->l);
  27. r->i=m->i;
  28. tree_delete (m);
  29. }
  30. }
  31. }
  32. }
  33. //Удаление вершины с максимальным значением из левого поддерева
  34. tree *tree_max(tree *r)
  35. {
  36. while (r->r)
  37. r=r->r;
  38. return r;
  39. }
Заранее спасибо за помощь)

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

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

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

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

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

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


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

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

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

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

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

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