题目
1339:【例3-4】求后序遍历
考点
- 二叉树的遍历方式
- 根据二叉树遍历序列画出二叉树
代码
#include<iostream>
#include<queue>
using namespace std;
// 输入先序和中序,求后序
void calc(string pre, string mid, string& post) {
if (pre.empty() || mid.empty()) {
return;
}
// 找出根节点
char root = pre[0];
int rootIndex = mid.find(root);
// 分开左右子树
string leftPre = pre.substr(1, rootIndex);
string leftMid = mid.substr(0, rootIndex);
string rightPre = pre.substr(rootIndex + 1);
string rightMid = mid.substr(rootIndex + 1);
// 递归求解
calc(leftPre, leftMid, post);
calc(rightPre, rightMid, post);
// 加上根节点
post += root;
}
int main() {
string pre, mid, post;
cin >> pre >> mid;
calc(pre, mid, post);
cout << post << endl;
return 0;
}
评测结果