#include<iostream> using namespace std; struct TreeNode{ char ch; TreeNode* left; TreeNode* right; }; int i = 0; void create(string &s,TreeNode *node) { if(s[i] == '#'){ if(node->ch == ' '){ node->ch = s[i]; i++; } return; } if(s[i] != '#'){ if(node -> ch == ' '){ node->ch = s[i]; i++; } if(node -> left == nullptr) { node->left = new TreeNode; node->left->ch = ' '; node->left->left = nullptr; node->left->right = nullptr; } if(node -> right == nullptr) { node->right = new TreeNode; node->right->ch = ' '; node->right->left = nullptr; node->right->right = nullptr; } create(s, node->left); create(s, node->right); } } void infixOrder(TreeNode* node) { if(node == nullptr || node -> ch == '#') return;; infixOrder(node->left); cout << node->ch << " "; infixOrder(node->right); } int main(void) { string s; cin >> s; TreeNode* root = new TreeNode; root->ch = ' '; root ->left= nullptr; root-> right = nullptr; create(s, root); infixOrder(root); return 0; }