题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入输出格式
输入格式:2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式:1行,表示一棵二叉树的先序。
输入输出样例
输入样例#1:
复制
BADC BDCA
代码:
#include<bits/stdc++.h> using namespace std; string s1,s2; void dfs(int l1,int r1,int l2,int r2) { int m=s1.find(s2[r2]); cout<<s2[r2]; if(m>l1) dfs(l1,m-1,l2,r2-(r1-m)-1);//m>l1,有左树,r1-m为右子树结点数 if(m<r1) dfs(m+1,r1,l2+m-l1,r2-1);//m<l2,有右树,m-l1为左子树节点数 } int main() { cin>>s1; cin>>s2; dfs(0,s1.length()-1,0,s1.length()-1); return 0; }