Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #define COUNT 10
- class Tree
- {
- private:
- struct Node
- {
- int value;
- Node* left;
- Node* right;
- Node() : value(0), left(nullptr), right(nullptr) {};
- };
- Node* root;
- void buildTree(Node* node);
- void printMethod(Node* root, int space);
- public:
- Tree(size_t N);
- void print();
- };
- int main()
- {
- size_t N;
- std::cin >> N;
- Tree a(N);
- a.print();
- return 0;
- }
- void
- Tree::buildTree(Node* node)
- {
- if (node->value == 1)
- {
- return;
- }
- else if (node->value % 2 == 0)
- {
- node->left = new Node;
- node->left->value = node->value / 2;
- node->right = nullptr;
- buildTree(node->left);
- }
- else
- {
- node->left = new Node;
- node->left->value = node->value / 2;
- node->right = new Node;
- node->right->value = node->value - node->value / 2;
- buildTree(node->left);
- buildTree(node->right);
- }
- }
- Tree::Tree(size_t N)
- {
- root = new Node;
- root->value = N;
- buildTree(root);
- }
- void Tree::print()
- {
- printMethod(root, 0);
- }
- void Tree::printMethod(Node* root, int space)
- {
- if (root == nullptr)
- return;
- space += COUNT;
- printMethod(root->right, space);
- std::cout << std::endl;
- int i = COUNT;
- while (i != space)
- {
- std::cout << " ";
- i++;
- }
- std::cout << root->value << "\n";
- printMethod(root->left, space);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement