微信扫一扫打赏支持

求后序遍历

求后序遍历

【问题描述】
  输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。
【输入格式】
  输入文件为tree.in,共两行,第一行一个字符串,表示树的先序遍
历,第二行一个字符串,表示树的中序遍历。树的结点一律用小写
字母表示。
【输出格式】
  输出文件为tree.out,仅一行,表示树的后序遍历序列。
【样例输入】
  abdec
  dbeac
【样例输出】
  debca

 

 1 #include <cstring>
 2 #include <iostream>
 3 #include <cstdio>
 4 using namespace std;
 5 string s1, s2;
 6 
 7 void calc(int l1, int r1, int l2, int r2)
 8 {
 9     int m = s2.find(s1[l1]);
10     if(m > l2) calc(l1 + 1, l1 + m - l2, l2, m - 1);
11     if(m < r2) calc(l1 + m - l2 + 1, r1, m + 1, r2);
12     cout << s1[l1];
13 }
14 
15 int main()
16 {
17     freopen("tree.in", "r", stdin);
18     freopen("tree.out", "w", stdout);
19     cin >> s1 >> s2;
20     calc(0, s1.length() - 1, 0, s2.length() - 1);
21     cout << endl;
22     return 0;
23 }
View Code

 

posted @ 2017-09-02 23:23  范仁义  阅读(350)  评论(0编辑  收藏  举报