9.4. Отображение деревьев
9.4. Отображение деревьев
Так же, как и любые объекты данных в Прологе, двоичное дерево T может быть непосредственно выведено на печать при помощи встроенной процедуры write. Однако цель
write( T)
хотя и отпечатает всю информацию, содержащуюся в дереве, но действительная структура дерева никак при этом не будет выражена графически. Довольно утомительная работа — пытаться представить себе структуру дерева, рассматривая прологовский терм, которым она представлена. Поэтому во многих случаях желательно иметь возможность отпечатать дерево в такой форме, которая графически соответствует его структуре.
Существует относительно простой способ это сделать. Уловка состоит в том, чтобы изображать дерево растущим слева направо, а не сверху вниз, как обычно. Дерево нужно повернуть влево таким образом, чтобы корень стал его крайним слева элементом, а листья сдвинулись вправо (рис. 9.16).
Рис. 9.16. (а) Обычное изображение дерева. (b) То же дерево, отпечатанное процедурой отобр (дуги добавлены для ясности).
Давайте определим процедуру
отобр( T)
так, чтобы она отображала дерево в форме, показанной на рис. 9.16. Принцип работы этой процедуры:
Для того, чтобы отобразить непустое дерево T, необходимо:
(1) отобразить правое поддерево дерева T с отступом вправо на расстояние H;
(2) отпечатать корень дерева T;
(3) отобразить левое поддерево дерева T с отступом вправо на расстояние H.
Величина отступа H, которую можно выбирать по желанию, — это дополнительный параметр при отображении деревьев. Введем процедуру
отобр2( T, H)
печатающую дерево T с отступом на H пробелов от левого края листа. Связь между процедурами отобр и отобр2 такова:
отобр( T) :- отобр2( T, 0).
На рис. 9.17 показана программа целиком. В этой программе предусмотрен сдвиг на 2 позиции для каждого уровня дерева. Описанный принцип отображения можно легко приспособить для деревьев других типов.
отобр( T) :-
отобр2( T, 0).
отобр2( nil, _ ).
отобр2( дер( L, X, R), Отступ) :-
Отступ2 is Отступ + 2,
отобр2( R, Отступ2),
tab( Отступ), write( X), nl,
отобр( L, Отступ2).
Рис. 9.17. Отображение двоичного дерева.
Упражнение
9.14. Наша процедура изображает дерево, ориентируя его необычным образом: корень находится слева, а листья — справа. Напишите (более сложную) процедуру для отображения дерева, ориентированного обычным образом, т.е. с корнем наверху и листьями внизу.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
14.4. Расширенный поиск с помощью двоичных деревьев
14.4. Расширенный поиск с помощью двоичных деревьев В разделе 6.2 «Функции сортировки и поиска» мы представили функции для поиска и сортировки массивов. В данном разделе мы рассмотрим более продвинутые
14.7. Обход деревьев файловых систем
14.7. Обход деревьев файловых систем Существуют две функции, которые облегчают приложениям просмотр всех файлов каталога, включая файлы в подкаталогах. Рекурсивный просмотр всех элементов древовидной структуры (например, файловой системы) часто называется обходом (walk)
Отображение
Отображение Еще одной возможностью, которую предоставляет пользователям Windows, является определение тех значков ActiveX-объектов, которые будут отображаться на Рабочем столе, в папках Панель управления и Мой
Отображение и курсоры
Отображение и курсоры В данной категории настраивают внешний вид указателей мыши при выполнении различных операций (рис. 14.10). Рис. 14.10. Настройка указателей мышиПо умолчанию указатели при работе с инструментами, использующими кисть, отображаются в виде окружностей,
Создание деревьев и кустарников в программе OnyxTree
Создание деревьев и кустарников в программе OnyxTree В программу OnyxTREE входят четыре утилиты для создания моделей растений: OnyxTREE BAMBOO (проектирование бамбука), OnyxTREE BROADLEAF (проектирование лиственных деревьев), OnyxTREE CONIFER (проектирование хвойных деревьев) и OnyxTREE PALM (проектирование
Отображение модели
Отображение модели В AutoCAD 2010 применяется такой подход к отображению моделей, при котором можно использовать стили визуализации. Под стилем визуализации понимается сохраненный набор параметров внешнего вида модели, включающий в себя вид граней и ребер модели, цвет фона,
Отображение методов
Отображение методов Мы модифицируем класс Program, чтобы определить ряд статических методов, каждый из которых будет иметь один параметр System.Type и возвращать void. Начнем с метода ListMethods(), который (как вы можете догадаться сами) печатает имена всех методов, определенных
Реализация класса бинарных деревьев
Реализация класса бинарных деревьев Как и в случае остальных уже рассмотренных структур данных, мы реализуем стандартное бинарное дерево в виде класса. Действительно, мы уже положили начало такому подходу, рассмотрев различные методы готового класса.В идеале, как,
Отображение модели
Отображение модели Начиная с прошлой версии программы, принципиально изменен подход к отображению моделей – теперь можно применять стили визуализации. Под стилем визуализации понимается сохраненный набор параметров внешнего вида модели, включающий в себя вид граней и
Зеркальное отображение
Зеркальное отображение Если вы собираетесь создать зеркальное отображение трехмерного объекта относительно прямой, лежащей в плоскости XY, то по-прежнему можно воспользоваться командой MIRROR. В противном случае необходимо применить команду 3DMIRROR, создающую отражение
Отображение на типы .NET
Отображение на типы .NET Стандартные типы PascalABC.NET реализуются типами библиотеки классов .NET. Далее приводится таблица соответствий стандартных типов PascalABC.NET и типов .NET. Тип PascalABC.NET Тип .NET int64 System.Int64 uint64 System.UInt64 integer, longint System.Int32 longword,
Прямое отображение
Прямое отображение Любая прикладная система стремится удовлетворить потребности некоторой проблемной области. Если имеется хорошая модель для описания этой проблемной области, то желательно обеспечить четкое отображение структуры проблемы описываемой моделью на
Посмотрите на комплекс механических деревьев Gardens by the Bay в Сингапуре Николай Маслухин
Посмотрите на комплекс механических деревьев Gardens by the Bay в Сингапуре Николай Маслухин Опубликовано 27 марта 2013 Город-сад, о котором так долго мечтали большевики, построили, как ни странно, в Сингапуре. Ботанический комплекс Gardens by the Bay (прибрежные