洛谷P1030求先序排列代码
P1030 [NOIP 2001 普及组] 求先序排列
题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,且二叉树的节点个数 $ \le 8$)。
输入格式
共两行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式
共一行一个字符串,表示一棵二叉树的先序。
输入输出样例 #1
输入 #1
BADC
BDCA
输出 #1
ABCD
说明/提示
【题目来源】
NOIP 2001 普及组第三题
代码
#include <bits/stdc++.h>
using namespace std;
string hou,zhong;
void tree(string t){
if (t.length()==0)return;
if (t.length()==1){cout<<t;return;};
int last=0,root=0;
for (int i=0;i<t.length();i++){
for (int j=0;j<hou.length();j++){
if (t[i]==hou[j]&&j>=last){last=j;root=i;};
}
}
string l=t.substr(0,root);string r=t.substr(root+1);
cout<<t[root];tree(l);tree(r);
}
int main(){
cin>>zhong>>hou;
tree(zhong);
return 0;
}

浙公网安备 33010602011771号