标签:不同 code cstring abc 长度 str ios 题目 排列
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入格式:
2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式:
1行,表示一棵二叉树的先序。
BADC BDCA
ABCD
【解析】
后序最后一个一定是根,找到根在中序中的位置,递归构建左右子树。
【代码】
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; string s1,s2; void calc(int l1,int r1,int l2,int r2) { cout<<s2[r2]; int m=s1.find(s2[r2]); if (m>l1) calc(l1,m-1,l2,l2+m-l1-1); if (m<r1) calc(m+1,r1,l2+m-l1,r2-1); } int main() { cin>>s1>>s2; calc(0,s1.length()-1,0,s2.length()-1); cout<<endl; return 0; }
标签:不同 code cstring abc 长度 str ios 题目 排列
原文地址:http://www.cnblogs.com/zzyh/p/6821333.html