Problem3016--树叶下落

3016: 树叶下落

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 0  Solved: 0
[Status] [Submit] [Creator:]

Description


上图给出了一个字母二叉树的图例,字母二叉树:
 1、树可能是空的
 2、可能有一个根节点。每个结点上有一个字母作为数据,并且有指向左子树和右子树的指针。左子树和右子树也都是字母二叉树
字母二叉树可以用图示的方式表示,每个结点用结点所包含的字母表示,如果左子树非空,向左下方的线段指向左子树,如果右子树非空,向右下方的线段指向右子树。
二叉树的叶子:
二叉树的叶子是指一个子树都为空的结点,在上图的示例中,有5个叶子结点分别是B、D、H、P和Y.
二叉树的前序遍历定义为:
如果树为空,则前序遍历为空。如果树不为空,则前序遍历的遍历顺序依次为:遍历根结点、遍历根的左子树、遍历根的右子树。上图的前序遍历是KGCBDHQMPY.
二叉搜索树:
上图中的树叶是字母二叉搜索树。字母二叉搜索树是每个结点满足下述条件的字母二叉树:
按照字母序,根结点的字母在左子树的所有结点的后面,在右子树的所有结点的前面。
问题描述:
在一棵字母二叉搜索树上进行如下的操作序列:
删除叶子并列出所删除的数据
重复此过程,直到树为空。
下图中从左边的树开始,图示了操作序列的过程,最后产生空树。

删除叶子的操作序列数据分别是:
BDHPY
CM
GQ
K
你的任务是:给出一个字母二叉搜索树的操作序列,输出这棵字母搜索二叉树的前序序列。

Input

输入包含多组测试数据。每组测试数据包含一行或多行大写字母的序列。每行给出按上述描述的步骤从二叉搜索树中删除的树叶,每行中给出的字母按字母升序排列。每组测试用例之间用一行分隔,该行只包含一个字符*
当输入为一个字符$时,表示测试数据输入完毕。

Output

对于每组测试用例,有唯一的二叉搜索树,输出只有一行,输出该数的前序遍历,不包含空格

Sample Input Copy

BDHPY
CM
GQ
K
*
AC
B
$

Sample Output Copy

KGCBDHQMPY
BAC

Source/Category

 level6