#NOI1992C. 无根树

无根树

当前没有测试数据。

Description

无根树与通常所说的树(有根树)很相似,它包括有节点和枝,但不含有根。

无根树节点间只有相邻关系,而不存在父子节点的关系。如图3.3-1所示,是一棵有7个节点的无根树;以图3.3-1的A为根节点得到图3.3-2所示的有根树,以图3.3-1的B为根节得到图3.3-3所示的有根树,但从无根树的角度看,图3.3-1、图3.3-2、图3.3-3是结构相同的无根树,同时无根树的结构与节点的名称无关。 image

有根树可以以字符串的形式表示,其递归表示方法为:

根节点(子树1 子树2 子树3……) 如图3.3-2,图3.3-3的有根树可分别表示为A(B(CF(EGD)))和B(ACF(EGD)),需要注意的是,由于子树的表示顺序可以不同,所以一棵有根树可以有多种表示方法,如图3.3-3由可表示为B(F(EGD)CA)和B(ACF(DEG))等。

表示无根树时,可以以它的任一节点为根节点,将其看作有根树从而可以利用

有根树的字符串表示形式来表示无根树。

任务1 由键盘读入一个字符串表示的无根树,无根树的各节点的名称用互不

相同的大写英文字母表示。则用户输入一个节点的名称,程序应能够输出一种以该七点为根节点的字符串形式。

程序输出无根树的辽符串形式时,各个节点的名称无关紧要,所有节点都以P

表示,后的各种输出了也采用这种方式。

例如:

用户输入无根树的字符串形式:A(B(CD(EF)))

指定的根节点为:D

输出P(P(PP)PP)P(PP(PP)P)P(PPP(PP))

**任务2 **输入两个串表示的无根树,判断其结构是否一样。注意与节点名称无关,只考虑结构。

**任务3 **输入无根树的总枝 N(1≤N≤11),输出所有枝数为N的互不相同的无根树,并记录总数。以字符串形式输出:例如,N=5时,共有6种不同结构的无根树。 image