Advertisement
Sanlover

Untitled

Oct 20th, 2020 (edited)
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.32 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. #define COUNT 10
  4.  
  5. class Tree
  6. {
  7. private:
  8. struct Node
  9. {
  10. int value;
  11. Node* left;
  12. Node* right;
  13.  
  14. Node() : value(0), left(nullptr), right(nullptr) {};
  15. };
  16.  
  17. Node* root;
  18.  
  19. void buildTree(Node* node);
  20. void printMethod(Node* root, int space);
  21. public:
  22. Tree(size_t N);
  23. void print();
  24. };
  25.  
  26. int main()
  27. {
  28. size_t N;
  29. std::cin >> N;
  30.  
  31. Tree a(N);
  32. a.print();
  33. return 0;
  34. }
  35.  
  36. void
  37. Tree::buildTree(Node* node)
  38. {
  39. if (node->value == 1)
  40. {
  41. return;
  42. }
  43. else if (node->value % 2 == 0)
  44. {
  45. node->left = new Node;
  46. node->left->value = node->value / 2;
  47.  
  48. node->right = nullptr;
  49.  
  50. buildTree(node->left);
  51. }
  52. else
  53. {
  54. node->left = new Node;
  55. node->left->value = node->value / 2;
  56.  
  57. node->right = new Node;
  58. node->right->value = node->value - node->value / 2;
  59.  
  60. buildTree(node->left);
  61. buildTree(node->right);
  62. }
  63. }
  64.  
  65. Tree::Tree(size_t N)
  66. {
  67. root = new Node;
  68. root->value = N;
  69.  
  70. buildTree(root);
  71. }
  72.  
  73. void Tree::print()
  74. {
  75. printMethod(root, 0);
  76. }
  77.  
  78. void Tree::printMethod(Node* root, int space)
  79. {
  80. if (root == nullptr)
  81. return;
  82.  
  83. space += COUNT;
  84.  
  85. printMethod(root->right, space);
  86.  
  87. std::cout << std::endl;
  88. int i = COUNT;
  89. while (i != space)
  90. {
  91. std::cout << " ";
  92. i++;
  93. }
  94. std::cout << root->value << "\n";
  95.  
  96. printMethod(root->left, space);
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement