Pro.ID1372 Title二叉树 Title链接http://10.20.2.8/oj/exercise/problem?problem_id=1372 AC19 Submit125 Ratio15.20% 时间&空间限制描述在众多的数据结构中,二叉树是一种特殊而重要的结构,有着广泛的应用。二叉树或者是一个节点,或者有且仅有一个节点为二叉树的根,其余节点被分成两个互不相交的子集,一个作为左子集,另一个作为右子集,每个子集又是一个二叉树。 遍历一棵二叉树就是按某条搜索路径巡访其中每个节点,使得每个节点均被访问一次,而且仅被访问一次。最常使用的有三种遍历的方式: 1.前序遍历:若二叉树为空,则空操作;否则先访问根节点,接着前序遍历左子树,最后再前序遍历右子树。 2.中序遍历:若二叉树为空,则空操作;否则先中序遍历左子树,接着访问根节点,最后再前中遍历右子树。 3.后序遍历:若二叉树为空,则空操作;否则先后序遍历左子树,接着后序遍历右子树,最后再访问根节点。 例如图(1)所示的二叉树: 前序遍历的顺序是ABCD,中序遍历的顺序是CBAD,后序遍历的顺序是CBDA。 对一棵二叉树,如果给出前序遍历和中许遍历的节点访问顺序,那么后序遍历的顺序是唯一确定的,也很方便地求出来。但如果现在只知道前序遍历和后序遍历的顺序,中序遍历的顺序是不确定的,例如:前序遍历的顺序是ABCD,而后序遍历的顺序是CBDA,那么就有两课二叉树满足这样的顺序(见图(1)和图(2))。 现在的问题是给定前序遍历和后序遍历的顺序,要求出总共有多少棵不同形态的二叉树满足这样的遍历顺序。 输入整个输入有两行,第一行给出前序遍历的访问顺序,第二行给出后序遍历的访问顺序。 二叉树的节点用一个大写字母表示,不会有两个节点标上相同字母。输入数据不包含空格,且保证至少有一棵二叉树符合要求。 输出Description 在众多的数据结构中,二叉树是一种特殊而重要的结构,有着广泛的应用。二叉树或者是一个节点,或者有且仅有一个节点为二叉树的根,其余节点被分成两个互不相交的子集,一个作为左子集,另一个作为右子集,每个子集又是一个二叉树。 遍历一棵二叉树就是按某条搜索路径巡访其中每个节点,使得每个节点均被访问一次,而且仅被访问一次。最常使用的有三种遍历的方式: 1.前序遍历:若二叉树为空,则空操作;否则先访问根节点,接着前序遍历左子树,最后再前序遍历右子树。 2.中序遍历:若二叉树为空,则空操作;否则先中序遍历左子树,接着访问根节点,最后再前中遍历右子树。 3.后序遍历:若二叉树为空,则空操作;否则先后序遍历左子树,接着后序遍历右子树,最后再访问根节点。 例如图(1)所示的二叉树: 前序遍历的顺序是ABCD,中序遍历的顺序是CBAD,后序遍历的顺序是CBDA。 对一棵二叉树,如果给出前序遍历和中许遍历的节点访问顺序,那么后序遍历的顺序是唯一确定的,也很方便地求出来。但如果现在只知道前序遍历和后序遍历的顺序,中序遍历的顺序是不确定的,例如:前序遍历的顺序是ABCD,而后序遍历的顺序是CBDA,那么就有两课二叉树满足这样的顺序(见图(1)和图(2))。 现在的问题是给定前序遍历和后序遍历的顺序,要求出总共有多少棵不同形态的二叉树满足这样的遍历顺序。 Input 整个输入有两行,第一行给出前序遍历的访问顺序,第二行给出后序遍历的访问顺序。 二叉树的节点用一个大写字母表示,不会有两个节点标上相同字母。输入数据不包含空格,且保证至少有一棵二叉树符合要求。 Output 输出一个整数,为符合要求的不同形态二叉树的数目。 Sample Input ABCD Sample Output 2 样例输入ABCD 样例输出2 提示作者 |