C1108 - 我还是一棵树

题目描述

小明最近研究数据结构中的树,很是着迷,他把上次的一道树的题目修改了下,来考一下自己

上一次树的题目是:P1106 - 查找树中的节点的题目中的树如下:

1.png

因为该树中存在重复的节点,所以必须给每个节点一个唯一的序号,小明想了想,可以用下面的格式去表示上面的树,这样可以避免掉那个唯一的序号(上图中的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