Удаление вершины дерева - 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
для освобождения памяти.
- Проверка условия:
if (!r->r&&!r->l)
- Вызов функции для удаления вершины дерева (рекурсивный вызов):
r=NULL;
- Освобождение памяти:
delete r;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д