Advertisement
Tark_Wight

Untitled

Mar 5th, 2023
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. // #include <queue>
  5.  
  6.  
  7. // _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  8. // _ _ _ СТРУКТУРА УЗЛА ДЕРЕВА _ _ _
  9. // _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  10. struct Node {
  11. int key;
  12. Node* left = nullptr;
  13. Node* right = nullptr;
  14. Node(int key, Node* left, Node* right) {
  15. this->key = key;
  16. this->left = left;
  17. this->right = right;
  18. }
  19. };
  20.  
  21. //_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  22. // _ _ _ ФУНКЦИИ ОБРАБОТКИ ВЕКТОРА И ДЕРЕВА _ _ _
  23. //_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  24. Node* addNode(int key, Node* left, Node* right) {
  25. Node* node = new Node(key, left, right);
  26. return node;
  27. }
  28.  
  29.  
  30. int midOfVector(int start, int end) {
  31. return start + (end - start) / 2;
  32. }
  33.  
  34.  
  35. Node* vectorToBST(std::vector<int> vector, int start, int end);
  36.  
  37. Node* newRoot(std::vector<int> vector, int start, int end) {
  38. return addNode(vector[midOfVector(start, end)],vectorToBST(vector, start, midOfVector(start, end) - 1), vectorToBST(vector, midOfVector(start, end) + 1, end));
  39. }
  40.  
  41. void exit() { return; }
  42.  
  43. Node* vectorToBST(std::vector<int> vector, int start, int end) {
  44. return start > end ? nullptr : newRoot(vector, start, end);
  45. }
  46.  
  47. //int vectorSize(vector<int> vector) {
  48. // return vector.size();
  49. //}
  50.  
  51. //_ _ _ _ _ _ _ _ _ _ _ _ _ _
  52. // _ _ _ ЧТЕНИЕ С ФАЙЛА _ _ _
  53. //_ _ _ _ _ _ _ _ _ _ _ _ _ _
  54. std::vector<int> readFile() {
  55. std::ifstream fin("input6.txt");
  56. std::vector<int> data;
  57. std::copy(std::istream_iterator<int>(fin), std::istream_iterator<int>(), std::back_inserter<std::vector<int> >(data));
  58. return data;
  59. }
  60.  
  61. // _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  62. // _ _ _ ВЫВОД ЧЕРЕЗ DFS _ _ _
  63. // _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  64. int printDFS(Node* node) {
  65. node == nullptr ? std::cout << "null " : std::cout << node->key << " ";
  66. // node == nullptr ? exit() : [](){};
  67. if (node == nullptr) { return 0; }
  68. printDFS(node->right) + printDFS(node->left);
  69. return 1;
  70. }
  71. // _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  72.  
  73. int main(){
  74. std::vector<int> data = readFile();
  75. printDFS(vectorToBST(data, 0, data.size() - 1));
  76. return 0;
  77. }
  78.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement