/
wonguk
/
Laboratory_work_5
Обзор
Документация
Войти
/
wonguk
/
Laboratory_work_5
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
binarytree.h
83 строки
3 KB
wonguk
Initial commit
13 фев 2026, 08:56
13 фев 2026, 08:56
9ba8e02
Код
Авторство
О чём код?
#ifndef BINARYTREE_H; #define BINARYTREE_H; #include "employee.h" struct TreeNode{ EmployeeData data; TreeNode* left; TreeNode* right; }; struct BinaryTree{ TreeNode* root; // Конструктор BinaryTree(); // Основные операции bool insert(const EmployeeData& data); TreeNode* search(int id) const; bool remove(int id); // Индивидуальное задание int removeBySpecialty(const string& specialty); //A3 // Операции из варианта А void printByExperienceAndSpecialty(int minExp, int maxExp, const string& specialty) const; // A1 void printNamesAndSalaries() const; //A2 double averageSalaryForExperience(int targetExp) const; //A2 int removeDuplicates(); //A4 // Обходы дерева void breadFirstTraversal() const; void preOrderTraversal() const; void inOrderTraversal() const; void inOrderTraversal() const; void postOrderTraversal() const; // Работа с файлами bool saveToFile(const string& filename) const; bool loadFromFile(const string& filename); // Вспомогательные методы bool isEmpty() const; void clear(); int count() const; private: // Вспомогательные рекурсивные функции TreeNode* insertRecursive(TreeNode* node, const EmployeeData& data); TreeNode* searchRecursive(TreeNode* node, int id) const; TreeNode* removeRecursive(TreeNode* node, int id); TreeNode* findMin(TreeNode* node) const; // Рекурсивные операции из варианта А void printByExperienceAndSpecialtyRecursive(TreeNode* node, int minExp, int maxExp, const string& specialty) const; void printNamesAndSalariesRecursive(TreeNode* node) const; double averageSalaryForExperienceRecursive(TreeNode* node, int targetExp, double& totalSalary, int& count) const; int removeDuplicatesRecursive(TreeNode* node); bool isDuplicate(TreeNode* node, const EmployeeData& data) const; // Рекурсивное удаление по специальности int removeBySpecialtyRecursive(TreeNode*& node, const string* specialty); // Рекурсивные обходы void preOrderRecursive(TreeNode* node) const; void inOrderRecursive(TreeNode* node) const; void inOrderRecursiveDesc(TreeNode* node) const; void postOrderRecursive(TreeNode* node) const; // Рекурсивная очистка void clearRecursive(TreeNode* node); // Рекурсивное сохранение void saveRecursive(TreeNode* node, FILE* file) const; // Рекурсивный подсчет int countRecursive(TreeNode* node) const; }; #endif