【NOIP】求先序排列

【NOIP】求先序排列

题目

题目描述

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度 ≤8)。

输入格式

2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。

输出格式

1行,表示一棵二叉树的先序。

输入输出样例

输入 #1 复制
BADC
BDCA
输出 #1 复制
ABCD

分析

水题, 给出中序和后序,求前序,上课的时候学树的结构学到了。。。

这里用了string的几个用法,不了解的可以看看。

string s = “abc”;
char k = ‘b’;
s.find(k); //在字符串s中查找k的对应位置(从0开始),这里是1.
s.substr(0,k) //想当于创建 一个新的字符串 它的内容是 字符串s的从0位置开始到往后k位置(不含k),
//这里是a

代码


#include<iostream>
using namespace std;
#include<cstring> 
string s1,s2;


void f(string s1,string s2){
	
	if(s1.size()>0){
		char root = s2[s2.size()-1] ;
		cout<<root;
		
		int k = s1.find(root);
		f(s1.substr(0,k),s2.substr(0,k));
		f(s1.substr(k+1),s2.substr(k,s2.size()-k-1));
	}
	
}
int main(){
	cin>>s1>>s2;
	f(s1,s2);
	return 0;
}
发布了75 篇原创文章 · 获赞 1 · 访问量 3635

猜你喜欢

转载自blog.csdn.net/A793488316/article/details/104743940