如果输出的第三行是4 5 3 6 2 7 1,那么输出的第一行可能是:
#include <bits/stdc+++.h>
using namespace std;
vector<int> v[10005];
string s;
void dfs1(int x){
printf("%d ", x);
for (int i = 0; i < v[x].size(); i++){
dfs1(v[x][i]);
}
}
void dfs2(int x){
for (int i = 0; i < v[x].size(); i++){
dfs2(v[x][i]);
}
printf("%d ", x);
}
int main() {
cin >> s;
s = '(' + s + ')';
stack<int> stk;
int ans = 0, cnt = 0;
for (int i = 0; i < s.size(); i++){
if (s[i] == '('){
stk.push(++cnt);
ans += stk.size();
}
else{
int x = stk.top(); stk.pop();
if (!stk.empty()){
v[stk.top()].push_back(x);
}
}
}
printf("%d\n", ans);
dfs1(1);
printf("\n");
dfs2(1);
return 0;
}
17
18
19
20