Данное приложение реализует работу с N-деревом, позволяя пользователю удалять самые далекие от корня листья. Программа написана на языке C++ и использует стандартные библиотеки для работы с вводом-выводом, временем и векторами.
- Создание N-дерева произвольного размера или по заданному шаблону.
- Удаление самых далеких от корня листьев.
- Вывод дерева на экран до и после удаления листьев.
- Измерение времени работы алгоритма удаления.
- Node: Структура для представления узла дерева, содержащая:
depth
: Глубина узла.val
: Значение узла.parent
: Указатель на родительский узел.childs
: Вектор указателей на дочерние узлы.
- add_node(int val, Node& parent, int arity)*: Добавляет новый узел к дереву.
- tree_height(Node& root)*: Вычисляет высоту дерева.
- depth_of_node(Node& node)*: Вычисляет глубину узла.
- set_all_depths(Node& root)*: Устанавливает глубину для всех узлов дерева.
- delete_distant_leafs(Node& root, int max_height)*: Удаляет листья на максимальной глубине.
- print_tree(Node root, int current_depth = 0)*: Выводит дерево в консоль.
- clear_tree(Node& root)*: Освобождает память, занятую деревом.
- create_custom_tree(std::ifstream& tree_file, int arity): Создает дерево по заданному шаблону.
- assign_parent_pointers(Node root)*: Устанавливает указатели на родительские узлы для всех узлов дерева.
- generate_file(const std::string& filename, int count): Генерирует файл с случайными значениями узлов.