poj2255树的重建问题
2017-03-10 17:38
190 查看
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<string>
#include<sstream>
#include<vector>
using namespace std;
const int maxn = 30;
struct node {
int left;
int right;
char value;
node() {
left = -1;
right = -1;
}
};
string pre, in;
node tree[maxn];
int root = 0;
int cnt = 0;
vector<char> ans;
int index = 0;
int build(int l,int r)
{
if (l > r)return -1;
char ch = pre[cnt++];
int pos = 0;
for (int i = l; i <= r; i++)
{
if (in[i] == ch)
{
pos = i; break;
}
}
tree[index].value = ch;
tree[index].left = build(l, pos - 1);
tree[index].right = build(pos + 1, r);
ans.push_back(ch);
return index++;
}
int main()
{
//freopen("input.txt","r",stdin);
while (cin >> pre) {
cin >> in;
root = 0;
cnt = 0;
index = 0;
for (int i = 0; i < maxn; i++)tree[i].left = -1, tree[i].right = -1;
ans.clear();
root = build(0, pre.length()-1);
for (int i = 0; i < ans.size(); i++)
cout << ans[i];
cout << endl;
}
return 0;
}
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<string>
#include<sstream>
#include<vector>
using namespace std;
const int maxn = 30;
struct node {
int left;
int right;
char value;
node() {
left = -1;
right = -1;
}
};
string pre, in;
node tree[maxn];
int root = 0;
int cnt = 0;
vector<char> ans;
int index = 0;
int build(int l,int r)
{
if (l > r)return -1;
char ch = pre[cnt++];
int pos = 0;
for (int i = l; i <= r; i++)
{
if (in[i] == ch)
{
pos = i; break;
}
}
tree[index].value = ch;
tree[index].left = build(l, pos - 1);
tree[index].right = build(pos + 1, r);
ans.push_back(ch);
return index++;
}
int main()
{
//freopen("input.txt","r",stdin);
while (cin >> pre) {
cin >> in;
root = 0;
cnt = 0;
index = 0;
for (int i = 0; i < maxn; i++)tree[i].left = -1, tree[i].right = -1;
ans.clear();
root = build(0, pre.length()-1);
for (int i = 0; i < ans.size(); i++)
cout << ans[i];
cout << endl;
}
return 0;
}
相关文章推荐
- POJ 2255 Tree Recovery【二叉树重建】
- POJ 2255(二叉树问题)
- POJ 2255 根据二叉树的前序和中序序列来重建二叉树
- POJ 2255 经典的重建二叉树
- POJ2255,Tree Recovery,二叉树重建
- POJ 2255 Tree Recovery(二叉树重建)
- 重建二叉树 POJ 2255
- poj 2255:重建二叉树
- POJ 2251 (三维迷宫问题) DFS /BFS
- POJ 1952 BUY LOW BUY LOWER 【DP】最长降序子序列及其计数问题
- POJ 1012 约瑟夫问题
- POJ 1321 棋盘问题(DFS深度优先搜索/回溯法)
- POJ 1928(百练2950) 花生问题
- POJ 2255
- POJ 1321 棋盘问题
- POJ 1830 开关问题
- poj-1001-1405-1503-高精度问题
- POJ 3624 0-1背包问题
- POJ 1017 装箱问题 解题报告
- POJ 2255 Tree Recovery