C1108 - 我还是一棵树
题目描述
小明最近研究数据结构中的树,很是着迷,他把上次的一道树的题目修改了下,来考一下自己
上一次树的题目是:P1106 - 查找树中的节点的题目中的树如下:

因为该树中存在重复的节点,所以必须给每个节点一个唯一的序号,小明想了想,可以用下面的格式去表示上面的树,这样可以避免掉那个唯一的序号(上图中的1,2,3...10这样的序号)
A(B(A,F),C(B(J)),B(C,I))
那么请你基于上面小明想到的表示树的格式去解析构造出这棵树,然后对这棵树进行遍历和求出这棵树的高度
树中的节点中值域是一个字符,是一个大写字符,可以重复出现
输入格式
1行,小明想到的括号表示树的字符串,不包含空格
表示树的格式:
根节点(子树1,子树2,子树3...)
每棵子树的表示方法与上面一致,是一种递归的括号表示法,这种表示法,子树的顺序很重要,是不能交换的,交换完就是不同的树了
只有一个根节点时,格式为:根节点
输出格式
第1行,树的先根遍历结果,每个节点值域使用一个空格分隔
第2行,树的后根遍历结果,每个节点值域使用一个空格分隔
第3行,树的层次遍历,每个节点值域使用一个空格分隔
第4行,树的高度(根节点的高度为1)
输入输出样例
| 输入样例 | 输出样例 |
|---|---|
| A(B(A,F),C(B(J)),B(C,I)) | A B A F C B J B C I A F B J B C C I B A A B C B A F B C I J 4 |
| A | A A A 1 |
数据范围与提示
对于100%的数据满足:字符串长度 <= 200,1 <= 节点的个数 <= 50
测试点数目
共10个测试点,每个测试点10分
时间与内存限制
每个测试点时间:1000ms(1.0s),内存:256MiB
输入输出模式
本OJ支持两种输入输出模式
1. 标准输入输出模式:
直接从标准输入和标准输出读写数据,不需要使用freopen进行文件输入输出重定向
2. 文件输入输出模式(国内信奥赛输入输出模式):
从文件中读写数据,需要使用freopen进行输入输出重定向
本题输入文件名为:C1108.in,输出文件名为:C1108.out