ВУЗ:
Составители:
Рубрика:
32
вершина существует, т.е. указатель не равен NULL, то выполняется просмотр
дерева сначала по левой вершине, а затем по правой. При достижении листьев
дерева функции del_next() вызываются с аргументом NULL и не выполняют
никаких действий, поэтому программа переходит к функции printf(), которая
вывод на экран сообщение об имени удаляемой вершины, а затем вызывается
функция free()
для освобождения памяти, занятой данным объектом. После
этого осуществляется переход к предыдущей функции del_next() и описанный
процесс повторяется до тех пор, пока не будут удалены все объекты кроме
корневого. Корень дерева удаляется непосредственно в функции del_tree(),
после чего можно говорить об удалении всего дерева.
Использование описанных функций в функции main() реализуются
следующим образом:
int main()
{
root = add_node(NULL,"Root");
TREE* current = add_node(root,"File 1",LEFT);
current = add_node(current,"File 2",LEFT);
current = add_node(root,"Folder 1",RIGHT);
current = add_node(current,"File 11",LEFT);
current = add_node(current,"File 12",LEFT);
current = add_node(root->right,"Folder 2",RIGHT);
current = add_node(current,"File 21",LEFT);
show_tree();
del_tree();
root = NULL;
return 0;
}
Данная функция сначала инициализирует глобальный указатель root как
корень дерева и в качестве первого аргумента функции add_node() записывает
NULL, что означает, что предыдущего объекта не существует. Затем вводится
вспомогательный указатель current, с помощью которого выполняется создание
двоичного дерева, описывающее файловую структуру (рис. 6). После создания
дерева вызывается функция show_tree() для его отображения на экран, затем
оно удаляется и программа завершает свою работу.
Задание на лабораторную работу
1. Написать программу работы с бинарным деревом в соответствии с
номером своего варианта.
Варианты заданий
Вариант Задание на программирование бинарного дерева
1
Написать программу копирования одного бинарного дерева в другое
2
Написать программу копирования правых вершин одного бинарного дерева в
другое
Страницы
- « первая
- ‹ предыдущая
- …
- 30
- 31
- 32
- 33
- 34
- …
- следующая ›
- последняя »