#P2255. Tree Recovery

Tree Recovery

题目描述

小瓦伦丁非常喜欢玩二叉树。她最喜欢的游戏是用大写字母作为节点,构建看起来随机的二叉树。

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

D

/ \

/ \

B E

/ \ \

/ \ \

A C G

/

/

F

为了记录她的树以便后人参考,她为每棵树写下两个字符串:**前序遍历**(根、左子树、右子树)和**中序遍历**(左子树、根、右子树)。例如,上图所示的树的前序遍历是 `DBACEGF`,中序遍历是 `ABCDEFG`。

她认为,这样的一对字符串足以在以后重建这棵树(尽管她从未尝试过)。

多年后,当她再次看到这些字符串时,她意识到重建树确实是可行的,但前提是她从未在同一棵树中重复使用任何字母

然而,手动重建树很快就变得繁琐。

于是,她现在请你编写一个程序来帮她完成这个任务!

输入格式

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

每个测试用例占一行,包含两个字符串 preordinord,分别表示二叉树的前序遍历和中序遍历。两个字符串均由不重复的大写字母组成(因此长度不超过 26)。

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

输出格式

对于每个测试用例,重建瓦伦丁的二叉树,并输出一行,表示该树的后序遍历(左子树、右子树、根)。

样例输入

DBACEGF ABCDEFG  
BCAD CBAD  

样例输出

ACBFGED  
CDAB  

来源

Ulm Local 1997