Программирование на языке С. Наместников С.М. - 31 стр.

UptoLike

Составители: 

31
show_next(node->left,off);
show_next(node->right,off+1);
}
}
void show_tree()
{
if(root != NULL)
{
printf("%s\n",root->data.name);
show_next(root->left,0);
show_next(root->right,1);
}
}
Первый параметр функции show_next() служит для перемещения к
следующим вершинам дерева, а второйдля смещения при отображении строк
на экране монитора, принадлежащих разным вершинам. Рекурсия функций
show_next() выполняется до тех пор, пока указатель на левую или правую
вершину не станет равным NULL. В этом случае работа функции завершается,
и управление передается предыдущей вызываемой
функции. Таким образом,
происходит отображение всего бинарного дерева.
При завершении программы необходимо удалить созданные объекты
дерева. Для этого также удобно воспользоваться рекурсивными функциями. По
аналогии введем рекурсивную функцию del_next(), и основную del_tree(), из
которой вызывается функция del_next(). Реализация этих функций приведена
ниже:
void del_next(TREE* node)
{
if(node != NULL)
{
del_next(node->left);
del_next(node->right);
printf("node %s - deleted\n",node->data.name);
free(node);
}
}
void del_tree()
{
if(root != NULL)
{
del_next(root->left);
del_next(root->right);
printf("node %s - deleted\n",root->data.name);
free(root);
}
}
Аргумент функции del_next() используется для перехода к следующим
вершинам дерева. В самой функции выполняется проверка: если следующая