Удаление вершины дерева - 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д