Самостоятельные задания
- Допишите генератор деревьев, чтобы выдаваемые им деревья имели количество вершин, точно соответствующее числу, указанному в его первом аргументе.
- Измените предикат, удаляющий значение из двоичного справочника, так, чтобы удалялся не минимальный элемент правого поддерева, а максимальный элемент левого поддерева.
- Создайте предикат, находящий максимальное из значений, находящихся в вершинах дерева.
- Создайте предикат, проверяющий, что дерево является двоичным справочником.
- Создайте предикат, переписывающий дерево в двоичный справочник.
- Создайте предикат, который будет находить среднеарифметическое значений, находящихся в вершинах дерева.
- Создайте предикат, который будет находить среднеарифметическое значений, находящихся в листьях дерева.
- Модифицируйте предикат, находящий сумму чисел, расположенных в вершинах дерева так, чтобы он суммировал только положительные числа.
- Измените его еще раз, чтобы он вычислял произведение отрицательных чисел.
- Модифицируйте предикат, "сворачивающий" двоичный справочник в список с сохранением порядка элементов, чтобы на выходе получалось два списка, содержащих, соответственно, положительные и отрицательные значения.
- Создайте предикат, подсчитывающий количество всех вершин данного дерева, значения которых принадлежат заданному диапазону.
- Создайте предикат, подсчитывающий количество всех вершин данного дерева заданной высоты.
- Создайте предикат, выводящий значения находящиеся в вершинах заданной высоты.
- Создайте предикат, проверяющий, является ли одно дерево поддеревом второго.
- Создайте предикат, выводящий дерево на экран (или в файл), расположив дерево следующим образом: корень находится слева, а листья справа.
- Создайте предикат, выводящий дерево на экран (или в файл), расположив дерево обычным образом: корень находится сверху, а листья снизу.