ВУЗ:
Составители:
Рубрика:
. Практикум по курсу «Алгоритмизация и программирование». Часть 2
Заметим, что функцию добавления элемента в дерево удобно использо-
вать и для построения дерева сортировки. Далее приводится пример функции
создания дерева сортировки на основе данных из текстового файла.
// определение функции создания дерева на основе
// данных текстового файла
int CreateTree(char* FileName, Tree*& root)
{
int k;
// открытие файла
FILE* f=fopen(FileName,"r");
if(f==NULL)
{
//Ошибка открытия файла
return -1;
}
// изначально дерево пусто
root=NULL;
// в цикле считываем числа из файла в переменную k
while(fscanf(f,"%d",&k)>0)
// добавляем элемент со значением k в дерево
AddTree(root,k);
fclose(f);
return 1;
}
Задача 2. Дано дерево сортировки. Написать функцию печати элементов
дерева в порядке неубывания.
Согласно правилам построения дерева сортировки сначала следует распе-
чатать элементы левого поддерева, потом элемент самой вершины и, в завер-
шении, элементы правого поддерева.
Очень просто выглядит решение этой задачи с использованием рекурсив-
ной функции, поскольку само определение дерева является рекурсивным
(каждое поддерево также является деревом).
// определение рекурсивной функции распечатки
// значений из узлов дерева в порядке неубывания
void PrintTree(Tree* root)
{
if(root!=NULL)
{
// печатаем значения из левого поддерева узла root
PrintTree(root->left);
95
. Практикум по курсу «Алгоритмизация и программирование». Часть 2
Заметим, что функцию добавления элемента в дерево удобно использо-
вать и для построения дерева сортировки. Далее приводится пример функции
создания дерева сортировки на основе данных из текстового файла.
// определение функции создания дерева на основе
// данных текстового файла
int CreateTree(char* FileName, Tree*& root)
{
int k;
// открытие файла
FILE* f=fopen(FileName,"r");
if(f==NULL)
{
//Ошибка открытия файла
return -1;
}
// изначально дерево пусто
root=NULL;
// в цикле считываем числа из файла в переменную k
while(fscanf(f,"%d",&k)>0)
// добавляем элемент со значением k в дерево
AddTree(root,k);
fclose(f);
return 1;
}
Задача 2. Дано дерево сортировки. Написать функцию печати элементов
дерева в порядке неубывания.
Согласно правилам построения дерева сортировки сначала следует распе-
чатать элементы левого поддерева, потом элемент самой вершины и, в завер-
шении, элементы правого поддерева.
Очень просто выглядит решение этой задачи с использованием рекурсив-
ной функции, поскольку само определение дерева является рекурсивным
(каждое поддерево также является деревом).
// определение рекурсивной функции распечатки
// значений из узлов дерева в порядке неубывания
void PrintTree(Tree* root)
{
if(root!=NULL)
{
// печатаем значения из левого поддерева узла root
PrintTree(root->left);
95
Страницы
- « первая
- ‹ предыдущая
- …
- 93
- 94
- 95
- 96
- 97
- …
- следующая ›
- последняя »
