现在是 4202 年,人类成功在距离地球 9180 光年外的区域找到了地外生物,并且通过 Lutece 号飞船将这些宝贵的生物样本带回了地球。
在经过一段研究后,研究人员发现这些生物也使用脱氧核苷酸作为遗传物质的组成单元。但是它们的脱氧核苷酸分子和地球生物的并不完全相同:地球生物的遗传物质 DNA 是呈双螺旋链型存在的,而它们的则是呈类似二叉树的结构存在的。
一种地外生物的核苷酸分子如下图所示:
现在研究人员想要进一步研究这些地外生物的遗传因子。他们发现这种树形遗传物质的某些连通的区域是值得研究的,比方说这一区域用于指导某种蛋白质的合成。于是他们想获得这样的区域在整个遗传物质树中出现的具体位置。不过很可惜,这些生物学者并不太擅长编程。他们于是向你求助,并且给了你如下简化后的问题。
给定一棵二叉树 $S$ 和 $T$。若对于 $S$ 的一棵子树 $S'$,删除若干个(可以不删)$S'$ 的子树后和 $T$ 相同,则称 $T$ 与 $S'$ 匹配。求 $S$ 所有和 $T$ 匹配的子树。此外,由于游离的磷酸基团会影响分子结构的稳定性,所以 [b]$T$ 中叶子节点的数量不会大于 $20$[/b]。
在这里,两棵树相同定义为两棵树均非空,且如果两棵树左和右儿子都分别相同。若其中一棵树没有左或右儿子,则另一棵树也必须没有。[b]请注意,这里的两棵子树并不等价。[/b]即若对于 $S$ 和 $T$,$S$ 只有左子树 $S'$,$T$ 只有右子树 $T'$,即使 $S'$ 和 $T'$ 相同,$S$ 和 $T$ 也不相同。