Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- //бинарное дерево
- class Tree {
- //узел дерева
- struct Node {
- int info;
- Node* left; //указатель на левое поддерево
- Node* right; //правое
- Node(int info) {
- this->info = info;
- left = right = nullptr;
- }
- };
- Node* root; //корень дерева
- protected:
- //добавление
- void add(Node*& root, int info) {
- if (root) {
- if (root->info < info) {
- add(root->right, info);
- }
- else {
- add(root->left, info);
- }
- }
- else {
- root = new Node(info);
- }
- }
- //29
- void fwrite(Node* root, ofstream& os) {
- if (root) {
- fwrite(root->left, os);
- os << root->info << " ";
- fwrite(root->right, os);
- }
- }
- //очистка
- void clear(Node*& root) {
- if (root) {
- clear(root->left);
- clear(root->right);
- delete root;
- root = nullptr;
- }
- }
- public:
- //конструктор
- Tree() {
- root = nullptr;
- }
- //добавление элемента в дерево
- void add(int info) {
- add(root, info);
- }
- //запись элементов дерева в файл в порядке их возрастания
- void fwrite(string file) {
- ofstream os(file); //открываем для записи
- fwrite(root, os);
- os.close();
- }
- //деструктор
- ~Tree() {
- clear(root);
- }
- };
- //для теста
- int main() {
- srand(time(NULL));
- system("chcp 1251"); //кодировка страницы
- system("cls");
- //заполняем случайно дерево
- int n = 0;
- cout << "Укажите размер дерева -> ";
- cin >> n;
- if (n <= 0) {
- n = 10;
- }
- Tree tr;
- for (int i = 0; i < n; i++) {
- tr.add(rand() % 100);
- }
- tr.fwrite("result.txt");
- //читаем данные из файла
- ifstream ios("result.txt");
- while (!ios.eof()) {
- ios >> n;
- if (ios.eof()) {
- break;
- }
- cout << n << " ";
- }
- cout << endl;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment