#include<iostream>
#include<string>
using namespace std;
string pre, tree, pos;
int index = 0;
void getTree(int x) //获取完全二叉树
{
if (x > pre.size())
return;
tree[x] = pre[index++];
getTree(x*2);
getTree(x*2 + 1);
}
void getPost(int x) //求后序遍历数组
{
if (x > pre.size())
return;
getPost(x*2);
getPost(x*2 + 1);
pos[index++] = tree[x];
}
int main()
{
getline(cin, pre);
tree.resize(pre.size() + 1);//提前重置string大小 防止溢出
pos.resize(pre.size() + 1);
//cout << tree.size() << endl;
index = 0;
getTree(1);
index = 0;//一定记得初始化
getPost(1);
for (int i = 0; i < pre.size(); i++)//输出后序遍历
cout << pos[i];
return 0;
}
string好难用,用自己写的数组不容易溢出,string还需要考虑大小重置。