POJ 2255 Tree Recovery

Posted IKnowYou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 2255 Tree Recovery相关的知识,希望对你有一定的参考价值。

主要是递归思想吧,然后找到边界条件,推了好久。

http://poj.org/problem?id=2255

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 
 5 string str1, str2;
 6 void recovery(int Lstr1, int Rstr1, int Lstr2, int Rstr2) {
 7     if (Lstr2 == Rstr2)
 8     {
 9         cout << str2[Lstr2];
10         return;
11     }
12     if (Lstr2 > Rstr2)//这是中止条件
13         return;
14     //找到根节点
15     int i = Lstr2;
16     while (str1[Lstr1] != str2[i])
17         i++;
18     int mov = i - Lstr2 - 1;
19     //下面是分为两颗子数
20     recovery(Lstr1 + 1, Lstr1 + 1 + mov, Lstr2, i - 1);
21     recovery(Lstr1 + 1 + mov + 1, Rstr1, i + 1, Rstr2);
22 
23 
24     cout << str2[i];
25     return;
26 }
27 
28 int main() {
29     while (cin >> str1 >> str2) {
30         recovery(0, str1.size() - 1, 0, str2.size() - 1);
31         cout << endl;
32     }
33     return 0;
34 }

 

以上是关于POJ 2255 Tree Recovery的主要内容,如果未能解决你的问题,请参考以下文章

POJ 2255 Tree Recovery

POJ-2255-Tree Recovery-求后序

POJ 2255 Tree Recovery

Tree Recovery POJ - 2255

POJ 2255 -- Tree Recovery

POJ - 2255 - Tree Recovery = 二叉树遍历