На этом шаге мы рассмотрим алгоритм вывода на экран бинарного дерева.
На этом шаге мы приведем алгоритм, связанный с изображением дерева на экране дисплея. Для этого используется обход дерева, который мы назовем обратным обратному.
Взгляните на приведенную ниже функцию:
void Vyvod (node **w,int l) // Изображение дерева w на экране дисплея. // (рекурсивный алгоритм). // *w - указатель на корень дерева. { int i; if (*w!=NULL) { Vyvod (&((**w).Right),l+1); for (i=1; i<=l; i++) cout<<" "; cout<<(**w).Key<<endl; Vyvod (&((**w).Left),l+1); } }
Само дерево "лежит на левом боку". Сначала выводится правое поддерево, причем очередная вершина "отступает" от левого края окна на величину, равную глубине вершины (расстояние от корня до этой вершины). Этот отступ реализуется циклом:
for (i=1; i<=l; i++) cout<<" ";
Обратите внимание, что значение переменной l каждый раз увеличивается на 1 при рекурсивном обращении к функции Vyvod().
На следующем шаге мы приведем пример программы, иллюстрирующей рассмотренные алгоритмы.