不用重建二叉树的做法:
#include <iostream>
using namespace std;
int k;
string pre, in, post; //分别代表前序中序和后序遍历
void dfs()
{
char root = pre[k ++ ];
if (root == '.') return; //空节点直接返回
dfs(); //进入左子树
in += root; //中序遍历
dfs(); //进入右子树
post += root; //后序遍历
}
int main()
{
cin >> pre;
dfs();
cout << in << endl << post << endl;
return 0;
}
大佬写的太好了,很清楚,这必须点个赞。