求先序序列

题目描述

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,且二叉树的节点个数 \le 88)。

输入格式

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

输出格式

共一行一个字符串,表示一棵二叉树的先序。

输入输出样例

输入 #1
BADC
BDCA
输出 #1
ABCD
#include<iostream>
#include<string>
using namespace std;
string a, b;
void dfs(string a, string b)//求先序序列
{
	if (a.length() > 0)
	{
		char c = b[b.length() - 1];
		cout << c;//打印先序序列
		int k = a.find(c);//在中序序列中找到根结点,即后序序列最后一个字符
		dfs(a.substr(0, k), b.substr(0, k));//从0开始截取k个字符包括0
		dfs(a.substr(k + 1), b.substr(k, b.length() - 1 - k));//第k+1个字符之和,包括第k+1    
	}
}
int main()
{
	cin >> a >> b;
	dfs(a, b);//a 中序序列  b 后序序列
	return 0;
}

  

posted @ 2023-04-09 22:04  wakeend  阅读(45)  评论(0)    收藏  举报