/
Oppq
/
Labs
Обзор
Документация
Войти
/
Oppq
/
Labs
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Lab5/ObMen.cpp
93 строки
2 KB
Oppq
update: Main.cpp, ObMen.cpp, Tree.cpp, Tree.h
25 фев 2026, 19:33
Верифицирован
25 фев 2026, 19:33
444ad2f
Код
Авторство
О чём код?
// Функции обходов + меню #include "Tree.h" #include <iostream> using namespace std; // Обход в глубину - прямой void s1(Tree* root) { if (root == nullptr) return; cout << " Id - " << root->det.code << " "; s1(root->left); s1(root->right); } // Обход в глубину по возрастанию void s2(Tree* root) { if (root == nullptr) return; s2(root->left); // В случае если по убыванию - root -> right и ниже root -> left cout << " Id - " << root->det.code << " "; s2(root->right); } // Обход в глубину - обратный. Идентичен прямому, реализован с выводом в конце. void s3(Tree* root) { if (root == nullptr) return; s3(root->left); // исправлено: сначала левое s3(root->right); cout << root->det.code << " "; } // Обход в глубину по убыванию void s4(Tree* root) { if (root == nullptr) return; s4(root->right); cout << " Id - " << root->det.code << " "; s4(root->left); } // Обход в ширину, бралось на лекции void BFS(Node* root) { if (root == nullptr) return; queue<Node*> queue; queue.push(root); while (!queue.empty()) { Node* cur = queue.front(); queue.pop(); cout << cur->data << " "; if (cur->left != nullptr) { queue.push(cur->left); } if (cur->right != nullptr) { queue.push(cur->right); } } } void menu() { cout << "1. Добавить деталь\n"; cout << "2. Удалить деталь по шифру\n"; cout << "3. Найти деталь по шифру\n"; cout << "4. Обход в ширину\n"; cout << "5. Прямой обход\n"; cout << "6. По возрастанию\n"; cout << "7. По убыванию\n"; cout << "8. Обратный обход\n"; cout << "9. Тест добавления\n"; cout << "10. Тест поиска\n"; cout << "11. Тест удаления\n"; cout << "12. Тест загрузки из файла\n"; cout << "13. Загрузить из файла\n"; cout << "14. Удалить дешевле заданной цены" << endl; cout << "0. Выход\n"; cout << "Выбор: "; }