cavaman

8.29

Jun 9th, 2021
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.03 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. //бинарное дерево
  7. class Tree {
  8.  
  9.     //узел дерева
  10.     struct Node {
  11.         int info;
  12.         Node* left; //указатель на левое поддерево
  13.         Node* right; //правое
  14.  
  15.         Node(int info) {
  16.             this->info = info;
  17.             left = right = nullptr;
  18.         }
  19.     };
  20.  
  21.     Node* root; //корень дерева
  22.  
  23. protected:
  24.  
  25.     //добавление
  26.     void add(Node*& root, int info) {
  27.         if (root) {
  28.             if (root->info < info) {
  29.                 add(root->right, info);
  30.             }
  31.             else {
  32.                 add(root->left, info);
  33.             }
  34.         }
  35.         else {
  36.             root = new Node(info);
  37.         }
  38.     }
  39.  
  40.     //29
  41.     void fwrite(Node* root, ofstream& os) {
  42.         if (root) {
  43.             fwrite(root->left, os);
  44.             os << root->info << " ";
  45.             fwrite(root->right, os);
  46.         }
  47.     }
  48.  
  49.     //очистка
  50.     void clear(Node*& root) {
  51.         if (root) {
  52.             clear(root->left);
  53.             clear(root->right);
  54.             delete root;
  55.             root = nullptr;
  56.         }
  57.     }
  58.  
  59. public:
  60.  
  61.     //конструктор
  62.     Tree() {
  63.         root = nullptr;
  64.     }
  65.  
  66.     //добавление элемента в дерево
  67.     void add(int info) {
  68.         add(root, info);
  69.     }
  70.  
  71.     //запись элементов дерева в файл в порядке их возрастания
  72.     void fwrite(string file) {
  73.         ofstream os(file); //открываем для записи
  74.         fwrite(root, os);
  75.         os.close();
  76.     }
  77.  
  78.     //деструктор
  79.     ~Tree() {
  80.         clear(root);
  81.     }
  82. };
  83.  
  84. //для теста
  85. int main() {
  86.     srand(time(NULL));
  87.     system("chcp 1251"); //кодировка страницы
  88.     system("cls");
  89.     //заполняем случайно дерево
  90.     int n = 0;
  91.     cout << "Укажите размер дерева -> ";
  92.     cin >> n;
  93.     if (n <= 0) {
  94.         n = 10;
  95.     }
  96.     Tree tr;
  97.     for (int i = 0; i < n; i++) {
  98.         tr.add(rand() % 100);
  99.     }
  100.     tr.fwrite("result.txt");
  101.  
  102.     //читаем данные из файла
  103.     ifstream ios("result.txt");
  104.     while (!ios.eof()) {
  105.         ios >> n;
  106.         if (ios.eof()) {
  107.             break;
  108.         }
  109.         cout << n << " ";
  110.     }
  111.     cout << endl;
  112.     system("pause");
  113.     return 0;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment