poj 2255

来源:互联网 发布:网络盒子接电脑显示器 编辑:程序博客网 时间:2024/06/05 08:32

做个简单题,用递归方式由前序和中序序列

打印后序序列

 

#include <iostream>#include <vector>#include <map>#include <list>#include <set>#include <deque>#include <stack>#include <queue>#include <algorithm>#include <cmath>#include <cctype>#include <cstdio>#include <iomanip>#include <cmath>#include <cstdio>#include <iostream>#include <string>#include <sstream>using namespace std;///宏定义const int INF = 20000000;const int maxn = 10010;const int MAXN = 17010;///全局变量 和 函数string pre, mid;void print(string ppre, string pmid){int i, j;if(ppre == "")//少写这一句是不行的{return;}if(ppre.size() == 1 || pmid.size() == 1){cout << ppre[0];return;}//求出左子树和右子树string MidtmpLeft(""), MidtmpRight(""), PretmpLeft(""), PretmpRight("");char root = ppre[0];for(i = 0; i < pmid.size(); i++){if(pmid[i] == root)break;}MidtmpLeft = pmid.substr(0, i);MidtmpRight = pmid.substr(i + 1, pmid.size() - (i + 1));PretmpLeft = ppre.substr(1, MidtmpLeft.size());PretmpRight = ppre.substr(MidtmpLeft.size() + 1, MidtmpRight.size());//先打印左子树print(PretmpLeft, MidtmpLeft);//再打印右子树print(PretmpRight, MidtmpRight);//打印根节点cout << ppre[0];}int main(){///while(cin >> pre >> mid){print(pre, mid);cout << endl;}///return 0;}

原创粉丝点击