3. Определить количество листьев на заданном уровне дерева.
4. Определить максимальную глубину дерева
5. Определить количество листьев на каждом уровне дерева.
6. Определить количество узлов (не листьев) бинарного дерева.
7. Определить количество узлов (не листьев) бинарного дерева, находящихся на заданном уровне.
8. Определить количество узлов (не листьев) бинарного дерева, находящихся на одном уровне с узлом, заданным значением ключевого признака.
9. Определить, являются ли два поддерева, заданные своими корнями (с помощью значений ключевого признака) тождественными по структуре.
10.Определить общее количество узлов, (включая листья и корень), в поддереве данного узла, заданного значением ключевого признака.
11.Удалить все листья на заданном уровне дерева.
12.Удалить все листья дерева.
13.Удалить все узлы с заданным ключом ( вместе с поддеревьями, если есть ).
14.Отпечатать содержимое всех узлов, лежащих на пути между двумя узлами, заданными своими ключевыми признаками.
15.Отпечатать количество узлов, лежащих на пути между двумя узлами, заданными своими ключевыми признаками.
16.Отпечатать количество узлов, имеющих ключевые признаки, равные заданному, и лежащих на пути между двумя узлами, заданными своими ключевыми признаками.
Примечания.
1. Каждый элемент дерева имеет ключевой признак (числовое поле - целое без знака, аналог поля INF1 в элементе списка) с произвольным значением. Содержание информационного поля произвольно (символьное поле, аналог поля INF2 в элементе списка).
2. Управление выбором функций организовать с помощью меню (использовать лабораторную работу «Списки_файлы», добавив в меню соответствующие пункты.)
3. Для целей отладки, а впоследствии и для демонстрации программы на защите одной из первых должна быть реализованы подзадача 1-б общего перечня действий «Формирование дерева из записей файла». Файл, как и дерево, должен содержать легко контролируемую информацию, сформированную для отладки заранее.
Вопросы для повторения
1. Особенности использования статической и динамической памяти.
2. Описание динамических переменных.
3. Использование указателей и ссылочных переменных.
4. Основные процедуры и функции для выделения и освобождения памяти на логическом уровне.
5. Основные процедуры и функции для выделения и освобождения памяти на физическом уровне.
6. Особенности использования динамических переменных.
7. Особенности создания и обработки очередей.
8. Особенности создания и обработки стеков и деков.
9. Особенности создания и обработки однонаправленных списков.
10. Особенности создания и обработки двунаправленных списков.
11. Особенности создания и обработки кольцевых списков.
12. Особенности создания и обработки списков с головными элементами.
13. Особенности создания и обработки мультисписков.
14. Использование рекурсии при работе со списками.
15. Понятия дерева, двоичного дерева поиска.
16. Нерекурсивные способы создания и обработки двоичных деревьев.
17. Рекурсивные способы создания и обработки двоичных деревьев.