洛谷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;
}
posted @ 2025-08-03 17:22  rachtakovsky  阅读(14)  评论(0)    收藏  举报


个人主页 | github | 洛谷 | 邮箱