乘法原理应用题
结论:
- 对于以S为根的二叉树,如果S既有左孩子又有右孩子,那么对于S而言的中序遍历的种类数 = 左孩子的种类数 * 右孩子的种类数
- 对于以S为根的二叉树,如果S只有左孩子或者右孩子,那么对于S而言的中序遍历的种类数 = 左孩子的种类数 * 右孩子的种类数 * 2
- 一棵二叉树中的只有一个孩子B(左或右)的结点A的特点:前序遍历中为AB,后序遍历中为BA
所以本题只需要找到所有只有一个孩子的结点数k,答案是(2^k)
#include<iostream>
#include<string>
using namespace std;
const int N = 30;
#define LL long long
string a, b;
int main(){
cin >> a >> b;
LL ans = 1;
for(int i = 0; i < a.size(); i ++)
for(int j = 1; j < b.size(); j ++)
if(a[i] == b[j] && a[i + 1] == b[j - 1])
ans *= 2;
cout << ans;
return 0;
}