Чтение онлайн

ЖАНРЫ

Неизвестно

Шрифт:

9. 13

внутри( Элем, д( _, Элем, _ ), [ Элем]).

внутри( Элем, д( Лев, Кор, _ ), [Кор | Путь]) :-

больше( Кор, Элем),

внутри( Элем, Лев, Путь).

внутри( Элем,д( _, Кор, Прав), [Кор | Путь]) :-

больше( Элем, Кор),

внутри( Элем, Прав, Путь).

9. 14

% Отображение двоичного дерева, растущего сверху вниз

% Предполагается, что каждая вершина занимает при печати

% один символ

отобр( Дер) :-

уровни( Дер, 0, да).

% Обработать все уровни

уровни( Дер, Уров, нет) :- !.

% Ниже уровня Уров больше нет вершин

уровни( Дер, Уров, да) :-

% Обработать все уровни, начиная с Уров

вывод( Дер, Уров, 0, Дальше), nl,

% Вывести вершины уровня Уров

Уров1 is Уров + 1,

уровни( Дер, Уров1, Дальше).

% Обработать следующие уровни

вывод( nil, _, _, _, _ ).

вывод( д( Лев, X, Прав), Уров, ГлубХ, Дальше) :-

Глуб1 is ГлубХ + 1,

вывод( Лев, Уров, Глуб1, Дальше),

% Вывод левого поддерева

( Уров = ГлубХ, !,

% X на нашем уровне?

write( X), Дальше = да;

% Вывести вершину, продолжить

write(' ') ),

% Иначе - оставить место

вывод( Прав, Уров, Глуб1, Дальше).

% Вывод левого поддерева

Глава 10

10. 1

внутри( Элем, л( Элем)). % Элемент найден в листе

внутри( Элем, в2( Д1, М, Д2) ):-

% Вершина имеет два поддерева

больше( М, Элем), !, % Вершина не во втором поддереве

внутри( Элем, Д1); % Поиск в первом поддереве

внутри( Элем, Д2). % Иначе - во втором поддереве

внутри( Элем, в3( Д1, М2, Д2, М3, Д3) ):-

% Вершина имеет три поддерева

больше( М2, Элем), !,

% Элемент не во втором и не в третьем поддереве

внутри( Элем, Д1); % Поиск в первом поддереве

больше( М3, Элем), !, % Элемент не в третьем поддереве

внутри( Элем, Д2); % Поиск во втором поддереве

внутри( Элем, Д3). % Поиск в третьем поддереве

10. 3

avl( Дер) :-

аvl( Дер, Глуб). % Дер является AVL-деревом глубины Глуб

avl( nil, 0). % Пустое дерево - AVL -дерево глубины 0

avl( д( Лев, Кор, Прав), Г) :-

avl( Лев, ГЛ),

avl( Прав, ГП),

( ГЛ is ГП; ГЛ is ГП + 1; ГЛ is ГП - 1),

% Глубины поддеревьев примерно совпадают

макс( ГЛ, ГП, Г).

макс1( U, V, М) :- % М = 1 + макс( U, V)

U > V, !, М is U + 1;

М is V + 1.

Глава 11

11. 1

вглубину1( [Верш | Путь], [Верш | Путь]) :-

цель( Верш).

вглубину1( [Верш | Путь], Решение) :-

после( Верш, Верш1),

not принадлежит( Верш1, Путь),

вглубину1( [ Верш1, Верш | Путь], Решение).

11. 6

решить( СтартМнож, Решение) :-

% СтартМнож - множество стартовых вершин

bagof( [Верш], принадлежит( Верш, СтартМнож),

Пути),

вширину( Пути, Решение).

Назад | Содержание | Вперёд

Назад | Содержание | Вперёд

ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ

А

Поделиться с друзьями: