题目原网址:http://poj.org/problem?id=2255

题目中文翻译:

Description

小瓦伦丁非常喜欢玩二叉树。 她最喜欢的游戏是用大写字母构造的随机二叉树。

这是她的一个创作的例子:

D
                                             
/ \
                                            
/   \
                                           
B     E
                                          
/ \     \
                                          /   \    
\
                                        
A     C     G
                                                   
/
                                                  
/
                                                  F

为了为后代记录她的树,她为每棵树写了两个字符串:前序遍历(根,左子树,右子树)和中序遍历(左子树,根,右子树)。 对于上面绘制的树,前序遍历是DBACEGF,中序遍历是ABCDEFG。

她认为这样一对字符串会提供足够的信息来重建树(但她从未尝试过)。

现在,多年以后,再次看到这些字符串,她意识到重建树确实是可能的,因为她从未在同一棵树上使用过两次相同的字母。

然而,手工重建很快就变得单调乏味。

所以现在她要求你写一个为她工作的程序!

Input

输入将包含一个或多个测试用例。

每个测试用例由一行包含两个字符串preord和inord,表示二叉树的前序遍历和中序遍历。 两个字符串都由不重复的大写字母组成。 (因此它们不超过26个字符。)

输入由文件结束(EOF)终止。

Output

对于每个测试用例,恢复瓦伦丁的二叉树并打印一行树的后序遍历(左子树,右子树,根)。

Sample Input

DBACEGF ABCDEFG

BCAD CBAD

Sample Output

ACBFGED

CDAB

解题思路:

通过先序遍历找到根,再根据中序遍历性质(一个节点的左儿子一定在它前面出现,而右儿子一定在它后面),找出这个节点的左右儿子,建树,最后输出后序遍历.

AC代码:

 #include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
#include<cstring> using namespace std; char q[],z[];
int xb; void work(int l,int r) {
char a;
int i;
if(l > r) return ;
a = q[xb++];
for(i = l;i <= r; i++)
if(a == z[i])
break;
work(l,i - );
work(i + ,r);
cout << a;
} int main()
{
while(scanf("%s%s",q,z) != EOF) {
getchar();
int len = strlen(z);
xb = ;
work(,len-);
cout << endl;
} return ;
}

POJ 2255 Tree Recoveryw(二叉树)的更多相关文章

  1. POJ 2255 Tree Recovery 二叉树的遍历

    前序和中序输入二叉树,后序输出二叉树:核心思想只有一个,前序的每个根都把中序分成了两部分,例如 DBACEGF ABCDEFG D把中序遍历的结果分成了ABC和EFG两部分,实际上,这就是D这个根的左 ...

  2. POJ 2255 Tree Recovery 二叉树恢复

    一道和Leetcode的一道题目基本上一样的题目. 给出前序遍历和中序遍历序列,要求依据这些信息恢复一颗二叉树的原貌,然后按后序遍历序列输出. Leetcode上有给出后序和中序,恢复二叉树的. 只是 ...

  3. POJ 2255 Tree Recovery——二叉树的前序遍历、后序遍历、中序遍历规则(递归)

    1.前序遍历的规则:(根左右) (1)访问根节点 (2)前序遍历左子树 (3)前序遍历右子树 对于图中二叉树,前序遍历结果:ABDECF 2.中序遍历的规则:(左根右) (1)中序遍历左子树 (2)访 ...

  4. poj 2255 Tree Recovery(求后序遍历,二叉树)

    版权声明:本文为博主原创文章,未经博主同意不得转载.vasttian https://blog.csdn.net/u012860063/article/details/37699219 转载请注明出处 ...

  5. POJ 2255 Tree Recovery && Ulm Local 1997 Tree Recovery (二叉树的前中后序遍历)

    链接:poj.org/problem?id=2255 本文链接:http://www.cnblogs.com/Ash-ly/p/5463375.html 题意: 分别给你一个二叉树的前序遍历序列和中序 ...

  6. POJ 2255. Tree Recovery

    Tree Recovery Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11939   Accepted: 7493 De ...

  7. POJ 2255 Tree Recovery 树的遍历,分治 难度:0

    http://poj.org/problem?id=2255 #include<cstdio> #include <cstring> using namespace std; ...

  8. Poj 2255 Tree Recovery(二叉搜索树)

    题目链接:http://poj.org/problem?id=2255 思路分析:根据先序遍历(如DBACEGF)可以找出根结点(D),其后为左右子树:根据中序遍历(如ABCDEFG),已知根结点(D ...

  9. POJ 2255 Tree Recovery(根据前序遍历和中序遍历,输出后序遍历)

    题意:给出一颗二叉树的前序遍历和中序遍历的序列,让你输出后序遍历的序列. 思路:见代码,采用递归. #include <iostream> #include <stdio.h> ...

随机推荐

  1. Spring中使用构造函数实现Beans自动装配

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/beans-auto-wiring/spring-autowiring-by-Constructor ...

  2. 表皮囊肿?wtf

    https://baike.baidu.com/item/%E8%A1%A8%E7%9A%AE%E5%9B%8A%E8%82%BF/7852024?fr=aladdin

  3. Meteor模板

    Meteor模板使用三个顶级标签.前两个是 head 和 body 标签.这些标签和在普通的HTML中做的工作一样.第三个标签 template.这是我们将HTML连接到JavaScript的地方. ...

  4. Ubuntu系统U盘安装以及降内核

    由于项目需要,要用U盘制作一个Linux系统,支持EFI启动,并且内核版本要求是2.6.35.6.所以在选系统的时候,就必须要选安装文件里面带有EF I目录,并且该目录下面有BOOTx64.EFI和g ...

  5. Codeforces div.2 B. The Child and Set

    题目例如以下: B. The Child and Set time limit per test 1 second memory limit per test 256 megabytes input ...

  6. spring 学习资料

    spring 官方教程 1.3.1 http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/index.html ...

  7. ZOJ 3316 Game 一般图最大匹配带花树

    一般图最大匹配带花树: 建图后,计算最大匹配数. 假设有一个联通块不是完美匹配,先手就能够走那个没被匹配到的点.后手不论怎么走,都必定走到一个被匹配的点上.先手就能够顺着这个交错路走下去,最后一定是后 ...

  8. java 实现打印当前月份的日历

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcTc0NTQwMTk5MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  9. Ubuntu16.04下安装Tensorflow CPU版本(图文详解)

    不多说,直接上干货! 推荐 全网最详细的基于Ubuntu14.04/16.04 + Anaconda2 / Anaconda3 + Python2.7/3.4/3.5/3.6安装Tensorflow详 ...

  10. Real-Time Compressive Tracking 论文笔记

    总体思想 1 利用符合压缩感知RIP条件的随机感知矩阵对多尺度图像进行降维 2 然后对降维的特征採用简单的朴素贝叶斯进行分类 算法主要流程 1 在t帧的时候,我们採样得到若干张目标(正样本)和背景(负 ...