#include #include void inorder (vector tree); void print (vector tree); int main (void) { char ch; int p; vector tree; p = 0; while (!cin.eof ()) { cin >> ch; if (cin.eof ()) break; if (ch == '(') p++; if (ch == ')') p--; tree.push_back (ch); if (!p) { inorder (tree); cout << endl; tree.resize (0); } } return 0; } void inorder (vector tree) { int i; int p; char root; vector left, right; //print (tree); if (tree.size () == 0) return; if (tree.size () == 1) { cout << tree [0] << " "; return; } left.resize (0); right.resize (0); p = 0; root = -1; if (tree [0] == '(') { i = tree.size (); tree.resize (i - 1); if (tree.size () == 1) return; } for (i = 0; i < tree.size (); i++) { if (tree [i] != '(' && tree [i] != ')') { root = tree [i]; break; } } i++; for ( ; i < tree.size (); i++) { if (tree [i] == '(') p++; if (tree [i] == ')') p--; left.push_back (tree [i]); if (!p) break; } i++; for ( ; i < tree.size (); i++) { if (tree [i] == '(') p++; if (tree [i] == ')') p--; right.push_back (tree [i]); if (!p) break; } inorder (left); cout << root << " "; inorder (right); } void print (vector tree) { int i; cout << endl << "--"; for (i = 0; i < tree.size (); i++) cout << tree [i]; cout << "--" << endl; }