二叉树的计数(count-tree)
题目描述
输入
第1行:二叉树的前序遍历顺序 第2行:后序遍历顺序
输出
第1行:1个整数,表示所有可能的二叉树的数量
样例输入
ABC
CBA
样例输出
题目描述
输入
第1行:二叉树的前序遍历顺序 第2行:后序遍历顺序
输出
第1行:1个整数,表示所有可能的二叉树的数量
样例输入
ABC
CBA
样例输出
4
这道题无比简(e)单(xin),乍一看根本没有思路,但我们可以发现:先序中第一个字符(也就是后序中最后一个字符)为根节点,而先序第二个和后序倒数第二个分别为左子树的根节点和右子树的根节点,这样就把两个串分别分割为两部分,然后就可以递归了。那么边界呢?其实,当把串分解为一个字符,那么就只有一种方案,分解为空树,则有两种方法(因为这样就把子树分成了空树和另一个字数,但由于是空树,另一个子树可以与空树交换位置),那么乘法原理相乘就……思路想出来了!但是……分解的过程中十分复杂,所以我检查了很久,很久……唉!╮(╯▽╰)╭AC代码如下:
#include<cstdio>
#include<cstring>
using namespace std;
char q[505];