#1049 : 后序遍历分治算法

来源:互联网 发布:mac练歌软件 编辑:程序博客网 时间:2024/05/03 17:21
//题意:给出该树前序以及中序的结果
//根据当前树的前序和中序为状态//求出后序遍历的结果#include <iostream>#include <stdio.h>#include <string.h>using namespace std;#define  MAXN 40char str1[MAXN];char str2[MAXN];char ret[MAXN];int root;int cnt;//因为中序与前序的长度是相同的void dfs(int leftL,int rightL){if (leftL==rightL){ret[cnt++] = str1[root];root++;return;}for (int i=leftL;i<=rightL;++i){if (str2[i]==str1[root]){root++;if (i>leftL)dfs(leftL,i-1);if (i<rightL)dfs(i+1,rightL);ret[cnt++] = str2[i];break;}}}int main(){scanf("%s %s",str1,str2);cnt = 0;root = 0;dfs(0,strlen(str2)-1);for (int i=0;i<cnt;++i) printf("%c",ret[i]);return 0;}

0 0
原创粉丝点击