【二叉树】POJ 2255
来源:互联网 发布:乐视电视显示网络异常 编辑:程序博客网 时间:2024/06/06 02:28
题意很简单,给出一棵树的前序&中序遍历,输出后续遍历。
首先我们来研究一下第一个sample:
DBACEGF ABCDEFG
前序遍历是先是从根节点->左子树->右子树;而中序遍历则是左子树->根节点->右子树。所以DBACEGF中D是根, ABC DEFG 中序可以找左子树&右子树,此时把D放在输出数组的最后一个,然后先递归处理右子树再处理左子树。
#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include <iomanip>#include <cstdlib>#include <limits.h>#include <string.h>#include <iostream>#include <fstream>#include <algorithm>using namespace std;#define LL long long#define MIN INT_MIN#define MAX INT_MAX#define PI acos(-1.0)#define FRE freopen("input.txt","r",stdin)#define FF freopen("output.txt","w",stdout)#define N 30char pre[N];char in[N];char ans[N];int len;void gao(int s1, int s2, int t1, int t2){ int i; if(s1 > s2)return ; for(i = t1; i <= t2; i++){ if(in[i] == pre[s1]){ break; } } ans[--len] = pre[s1]; if(s1 == s2){ return ; } gao(s1 + i - t1 + 1, s2, i + 1, t2); gao(s1 + 1, s1 + i - t1, t1, i - 1);}int main(){ while(scanf("%s%s",pre,in) != EOF){ int i,j; len = strlen(pre); memset(ans,'\0',sizeof(ans)); gao(0,len - 1,0,len - 1); printf("%s\n",ans); } return 0;}
- 【二叉树】POJ 2255
- poj 2255二叉树
- poj 2255:重建二叉树
- poj 2255 二叉树遍历
- POJ - 2255 二叉树遍历
- POJ 2255 Tree Recovery 二叉树遍历
- POJ 2255 Tree Recovery [二叉树]
- POJ 2255(二叉树问题)
- Poj 2255-Tree Recovery//二叉树,递归
- 二叉树的探索 poj 2255
- POJ 2255 Tree Recovery ( 二叉树)
- POJ 2255 重构二叉树
- POJ 2255 Tree Recovery 二叉树基础
- POJ 2255 经典的重建二叉树
- POJ 2255 Tree Recovery 二叉树恢复
- POJ 2255 二叉树的重建
- POJ 2255 Tree Recovery(二叉树)
- POJ 2255 Tree Recovery(二叉树重建)
- 回调函数
- MySQL中的mysqldump命令使用详解
- CountDownLatch
- linux下安装和使用mysql
- Android UI开发第十篇——锁屏效果
- 【二叉树】POJ 2255
- Exchanger
- SQL CHARINDEX函数的使用
- CSDN博文精选:最受欢迎的系列专栏博客推荐
- 软件包 java.util 的分层结构
- JSP内置对象
- window.open的例子和使用方法以及参数说明
- Oracle 数据库基本操作
- 杭电 1325 判断树 并查集