Разработать класс с вашей фамилией и инициалами, содержащий в виде одного поля численную характеристику.
Разработать класс с собственной реализацией бинарного дерева поиска, элементы которого являются объектами класса с фамилией. Разработать один или несколько методов, выполняющих действия по варианту. Структура должна поддерживать также операции добавления, удаления и поиска элемента.
Создать на его основе структуру с ~20 элементами и выполнить вывод элементов. Добавить 3-5 элементов и выполнить вывод элементов. Удалить несколько элементов и выполнить вывод оставшихся элементов.
Определить сложность алгоритма по варианту.
В отчёте проиллюстрировать результаты работы программы, а также доказать наглядно, корректность полученных результатов.
Варианты заданий
Вывести все элементы дерева, являющиеся левыми дочерними элементами по отношению к своему родителю. Обход дерева выполнять в глубину.
Вывести все элементы, принадлежащие заданному в параметрах диапазону значений [x1;x2]. Обход дерева выполнять в глубину.
Вывести количество и сумму значений элементов дерева, являющихся правыми дочерними элементами по отношению к своему родителю. Обход дерева выполнять в глубину.
Вывести количество и сумму значений всех элементов дерева. Обход дерева выполнять в глубину.
Вывести количество и сумму значений листьев для данного дерева. Обход дерева выполнять в глубину.
Дерево не отсортировано. Вывести количество и сумму значений элементов дерева, значение которых равно заданному. Обход дерева выполнять в глубину.
Найти элемент с данными, равными заданному значению, и вывести путь к нему, начиная от корня. Обход дерева выполнять в глубину.
Вывести минимальное из значений листьев дерева. Обход дерева выполнять в глубину.
Вывести максимальное из значений внутренних элементов дерева (не листьев). Обход дерева выполнять в глубину.
Удвоить нечётные значения элементов и разделить на 2 чётные значения элементов дерева. Обход дерева выполнять в глубину.
Вывести все элементы дерева, являющиеся левыми дочерними элементами по отношению к своему родителю. Обход дерева выполнять в ширину.
Вывести все элементы, принадлежащие заданному в параметрах диапазону значений [x1;x2]. Обход дерева выполнять в ширину.
Вывести количество и сумму значений элементов дерева, являющихся правыми дочерними элементами по отношению к своему родителю. Обход дерева выполнять в ширину.
Вывести количество и сумму значений всех элементов дерева. Обход дерева выполнять в ширину.
Вывести количество и сумму значений листьев для данного дерева. Обход дерева выполнять в ширину.
Дерево не отсортировано. Вывести количество и сумму значений элементов дерева, значение которых равно заданному. Обход дерева выполнять в ширину.
Найти элемент с данными, равными заданному значению, и вывести путь к нему, начиная от корня. Обход дерева выполнять в ширину.
Вывести минимальное из значений листьев дерева. Обход дерева выполнять в ширину.
Вывести максимальное из значений внутренних элементов дерева (не листьев). Обход дерева выполнять в ширину.
Удвоить нечётные значения элементов и разделить на 2 чётные значения элементов дерева. Обход дерева выполнять в ширину.
Определить и вывести на экран глубину дерева.
Вывести минимальный уровень (глубину) листьев дерева.
Подсчитать и вывести на экран количество элементов дерева, находящихся на каждом уровне.
Подсчитать и вывести на экран сумму элементов дерева, находящихся на каждом уровне.
Нумеруя элементы структуры в инфиксном порядке, вывести значения всех элементов с порядковыми номерами от 1 до N, где N задано параметром. Аналогично для префиксного порядка и постфиксного.
Вывести все элементы дерева тремя способами: в префиксной, инфиксной и постфиксной формах.
На основе исходного дерева создать новое таким образом, чтобы элементы с нечётными значениями были только листьями, а элементы с чётными значениями были преимущественно внутренними.
На основе исходного дерева создать новое, в котором корнем являлся бы заданный элемент, не являющийся корневым в исходном.
Создать исходное дерево с большим количеством вершин ~30. Удалить левое или правое поддерево. Создать новое идеально сбалансированное дерево на основе исходного.
Создать новое дерево, которое является зеркальным отражением исходного. Т е все левые дочерние элементы превращаются в правые дочерние и правые - в левые.