博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codevs1029 遍历问题
阅读量:6828 次
发布时间:2019-06-26

本文共 1040 字,大约阅读时间需要 3 分钟。

我们都很熟悉二叉树的前序、中序、后序遍历,在数据结构中常提出这样的问题:已知一棵二叉树的前序和中序遍历,求它的后序遍历,相应的,已知一棵二叉树的后序遍历和中序遍历序列你也能求出它的前序遍历。然而给定一棵二叉树的前序和后序,你却不能确定其中序遍历序列,考虑如下图中的几棵二叉树:

所有这些二叉树都有着相同的前序遍历和后序遍历,但中序遍历却不相同。

 

输入描述 Input Description

输入文件共2行,第一行表示该树的前序遍历结果,第二行表示该树的后序遍历结果。输入的字符集合为{a-z},长度不超过26。

 

输出描述 Output Description

输出文件只包含一个不超过长整型的整数,表示可能的中序遍历序列的总数。

 

样例输入 Sample Input

abc

cba

 

样例输出 Sample Output

4

 

写完代码整个人都不好了啊QAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQ

首先:中序遍历之所以不同,就是因为那些只有一个儿子的节点,他的儿子可以“左偏”,也可以“右偏”(2种情况)。

其次:只有一个儿子的节点,它前序遍历中的后一个节点一定是它后序遍历的前一个节点。

所以,数出这些节点的数量c,答案就是2的c次方。

(一道区间DP就这样被非DP水过了好开心啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈)

1 #include
2 #include
3 #include
4 using namespace std; 5 int main(){ 6 char ch1[30],ch2[30]; 7 cin>>ch1>>ch2; 8 int l=strlen(ch1),c=0; 9 for (int i=0;i
=1;--j)11 if (ch1[i]==ch2[j]&&ch1[i+1]==ch2[j-1])12 ++c;13 long long ans=1ll<
View Code

 

转载于:https://www.cnblogs.com/ZXTLFDeAR/p/4890847.html

你可能感兴趣的文章
递归方法
查看>>
Sonar+maven+jenkins集成,Java代码走查
查看>>
js中点击返回顶部
查看>>
Gtest源码剖析:1.实现一个超级简单的测试框架xtest
查看>>
第三方模块的安装
查看>>
Terracotta中锁与性能的问题
查看>>
遇到Linux系统安装时窗口过大,按钮点不到,该怎么解决
查看>>
js 判断输入是否为正整数
查看>>
「收藏」一些有趣的图
查看>>
探索虚函数(二)
查看>>
李青云老人的长寿秘诀【转】
查看>>
Springboot Thymeleaf 发邮件 将html内容展示在邮件内容中
查看>>
BZOJ2434:[NOI2011]阿狸的打字机——题解
查看>>
第5件事 做一个有taste的产品人
查看>>
暂时记录
查看>>
MicroPython开发之物联网快速开发板
查看>>
Mysql分布式部署高可用集群方案
查看>>
PHP中常用的输出语句比较?
查看>>
android&nbsp;setBackgroundColor
查看>>
UVa11181 条件概率
查看>>