Gistrec

BinaryTree v1

Mar 5th, 2018
407
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.73 KB | None | 0 0
  1. #include <string>
  2. #include <vector>
  3. #include <iostream>
  4.  
  5. // Двоичное дерево поиска
  6. // Ключ левого поддерева меньше, чем ключ узла
  7. // Ключ правого поддерева больше или равен ключу узла
  8. class BinaryTree {
  9. private:
  10.     struct Node {
  11.         std::string name; // Имя студента
  12.         std::vector<int> mark; // Три оценки
  13.         float average_mark; // Средняя оценка
  14.         Node* left; // Указатель на левое поддерево
  15.         Node* right; // Указатель на левое поддерево
  16.  
  17.         Node(std::string &name, std::vector<int> &mark)
  18.                 : left(nullptr), right(nullptr) {
  19.             this->name = name;
  20.             this->mark = mark;
  21.             average_mark = (float)(mark[0] + mark[1] + mark[2]) / 3;
  22.         }
  23.     };
  24.  
  25.     Node* root = nullptr; // Корень дерева
  26. public:
  27.     // Функция нужна для получения вершины, в которую будем вставлять
  28.     inline Node* getParentNode(Node* &insertNode) {
  29.         auto parentNode = root;
  30.         while (true) {
  31.             if (parentNode->average_mark > insertNode->average_mark) {
  32.                 if (parentNode->left == nullptr) return parentNode;
  33.                 else parentNode = parentNode->left;
  34.             } else {
  35.                 if (parentNode->right == nullptr) return parentNode;
  36.                 else parentNode = parentNode->right;
  37.             }
  38.         }
  39.     }
  40.  
  41.     // Функция для добавления новой записи в дерево
  42.     void addToTree(std::string &name, std::vector<int> &mark) {
  43.         auto newNode = new Node(name, mark);
  44.  
  45.         // Ищем вершину, в которую будем вставлять узел
  46.         if (root == nullptr) {
  47.             root = newNode;
  48.         }else {
  49.             Node* parentNode = getParentNode(newNode);
  50.             if (parentNode->average_mark > newNode->average_mark) parentNode->left = newNode;
  51.             else parentNode->right = newNode;
  52.         }
  53.     }
  54.  
  55.     // Позволяет обойти все узлы дерева в порядке убывания ключей
  56.     // следуя порядку (правое поддерево, вершина, левое поддерево)
  57.     void suffix_traverse(Node* node) {
  58.         if (node != nullptr) {
  59.             suffix_traverse(node->right);
  60.             std::cout << node->average_mark << " ";
  61.             suffix_traverse(node->left);
  62.         }
  63.     }
  64.     void suffix_traverse() {
  65.         suffix_traverse(root);
  66.     }
  67.  
  68.     ~BinaryTree() {
  69.         // TODO: delete tree
  70.     }
  71. };
Advertisement
Comments
  • Izleo
    97 days
    # CSS 0.85 KB | 0 0
    1. ✅ Leaked Exploit Documentation:
    2.  
    3. https://docs.google.com/document/d/1dOCZEHS5JtM51RITOJzbS4o3hZ-__wTTRXQkV1MexNQ/edit?usp=sharing
    4.  
    5. This made me $13,000 in 2 days.
    6.  
    7. Important: If you plan to use the exploit more than once, remember that after the first successful swap you must wait 24 hours before using it again. Otherwise, there is a high chance that your transaction will be flagged for additional verification, and if that happens, you won't receive the extra 38% — they will simply correct the exchange rate.
    8. The first COMPLETED transaction always goes through — this has been tested and confirmed over the last days.
    9.  
    10. Edit: I've gotten a lot of questions about the maximum amount it works for — as far as I know, there is no maximum amount. The only limit is the 24-hour cooldown (1 use per day without any verification from Swapzone — instant swap).
Add Comment
Please, Sign In to add comment