Основы программирования на языке Пролог

Самостоятельные задания


  1. Допишите генератор деревьев, чтобы выдаваемые им деревья имели количество вершин, точно соответствующее числу, указанному в его первом аргументе.
  2. Измените предикат, удаляющий значение из двоичного справочника, так, чтобы удалялся не минимальный элемент правого поддерева, а максимальный элемент левого поддерева.
  3. Создайте предикат, находящий максимальное из значений, находящихся в вершинах дерева.
  4. Создайте предикат, проверяющий, что дерево является двоичным справочником.
  5. Создайте предикат, переписывающий дерево в двоичный справочник.
  6. Создайте предикат, который будет находить среднеарифметическое значений, находящихся в вершинах дерева.
  7. Создайте предикат, который будет находить среднеарифметическое значений, находящихся в листьях дерева.
  8. Модифицируйте предикат, находящий сумму чисел, расположенных в вершинах дерева так, чтобы он суммировал только положительные числа.
  9. Измените его еще раз, чтобы он вычислял произведение отрицательных чисел.
  10. Модифицируйте предикат, "сворачивающий" двоичный справочник в список с сохранением порядка элементов, чтобы на выходе получалось два списка, содержащих, соответственно, положительные и отрицательные значения.
  11. Создайте предикат, подсчитывающий количество всех вершин данного дерева, значения которых принадлежат заданному диапазону.
  12. Создайте предикат, подсчитывающий количество всех вершин данного дерева заданной высоты.
  13. Создайте предикат, выводящий значения находящиеся в вершинах заданной высоты.
  14. Создайте предикат, проверяющий, является ли одно дерево поддеревом второго.
  15. Создайте предикат, выводящий дерево на экран (или в файл), расположив дерево следующим образом: корень находится слева, а листья справа.
  16. Создайте предикат, выводящий дерево на экран (или в файл), расположив дерево обычным образом: корень находится сверху, а листья снизу.


Содержание раздела