codevs 1029 遍历问题

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 钻石 Diamond

题目描述 Description

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

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

输入描述 Input Description

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

输出描述 Output Description

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

样例输入 Sample Input

abc

cba

样例输出 Sample Output

4

 1 /*虽然题目说要用树形DP或者搜索,但是如果对树的结构了解够深的话,也可以直接做。
 2 很明显,已知一棵二叉树的前序遍历和后序遍历,判断中序遍历时,其可能性只与没有兄弟节点的叶节点的位置有关。
 3 假设没有兄弟节点的叶节点共有n个,则可能性边有2^n个。(就不证明了)
 4 那么,如何计算n的值呢?
 5 下面有一个性质:
 6 一棵二叉树的前序遍历a1a2a3...ai和后序遍历b1b2b3...bi有一种关系:
 7 没有兄弟节点的叶节点的根 在a序列下标为i, 在b序列下标为j
 8 则有  a[i-1] == b[j+1]
 9 这是因为当根只有一棵子树时,前序和后序遍历都是先遍历它的孩子,而且是唯一的一个孩子,所以相对位置是一样的。
10 */
11 #include<iostream>
12 using namespace std;
13 string pre,hou;
14 int lenpre,lenhou;
15 int ans=0;
16 int main()
17 {
18     cin>>pre>>hou;
19     lenpre=pre.length()-1;
20     lenhou=hou.length()-1;
21     for(int i=1;i<=lenpre;++i)
22       for(int j=0;j<=lenhou-1;++j)
23       if(pre[i]==hou[j]&&pre[i-1]==hou[j+1])
24       ans++;
25     cout<<(long long)(1<<ans)<<endl;
26     return 0;
27 }

转载于:https://www.cnblogs.com/c1299401227/p/5573830.html

二叉树结构 codevs 1029 遍历问题相关推荐

  1. 已知二叉树的前序遍历、中序遍历或者中序遍历、后序遍历求二叉树结构的算法

    二叉树中的前序遍历是先访问根结点,再访问左子树,右子树. 中序遍历是先访问左子树,再是根结点,最后是右子树. 后序遍历是先访问左子树,再是右子树,最后是根结点. 算法思路是先根据前序遍历的第一个结点或 ...

  2. java已知一个二叉树_大牛带你学 | 由二叉树的遍历序列求二叉树结构的解题方法归纳...

    前言 二叉树章节 属于数据结构考察的三大重点章节(线性表.树.图)之一,不管是在自命题院校考察和408统考都是考察频次很高的考点.今天,大牛学长就来为各位同学总结归纳一个二叉树知识考察中的常见题型的解 ...

  3. 数据结构学习——树形结构之递归遍历二叉树

    目录 一. 什么是二叉树 二. 二叉树分类 2.1.完全二叉树 2.2.满二叉树 2.3.扩充二叉树 2.4.平衡二叉树 三. 二叉树的应用场景 四. 遍历方式 五. 为什么要研究遍历 六. 前序遍历 ...

  4. c语言以顺序结构存储的二叉树的非递归遍历,C语言二叉树的非递归遍历实例分析...

    本文以实例形式讲述了C语言实现二叉树的非递归遍历方法.是数据结构与算法设计中常用的技巧.分享给大家供大家参考.具体方法如下: 先序遍历: void preOrder(Node *p) //非递归 { ...

  5. 二叉树的先序遍历(非递归)

    虽然递归简单理解,但是用递归内存开销大,耗时长,性能往往不如非递归方式 所以这里通过栈,用非递归方法实现二叉树的先序遍历 二叉树的存储结构定义: typedef struct node{int dat ...

  6. C语言基本数据结构之二(二叉树的三种遍历,节点数以及深度算法)

    关于二叉树的定义,网上有比较好的介绍,在这里就简单介绍二叉树的一些性质 二叉树的基本性质 1)二叉树的第i层上至多有 2^(i-1)(i ≥1)个结点: 2)深度为 h 的二叉树中至多含有 2^h – ...

  7. 二叉树的非递归遍历(c/c++)

    由于递归算法相对于非递归算法来说效率通常都会更低,递归算法会有更多的资源需要压栈和出栈操作(不仅仅是参数,还有函数地址等)由于编译器对附加的一些栈保护机制会导致递归执行的更加低效,使用循环代替递归算法 ...

  8. LeetCode 92反转链表Ⅱ93复制ip地址94二叉树的中序遍历

    微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...

  9. 二叉树的非递归遍历(统一的模板)

    二叉树的非递归遍历 前言 树的存储结构 先序遍历 先序的递归遍历 先序的非递归遍历 中序遍历 中序的递归遍历 中序遍历的非递归算法 后序遍历 后序的递归遍历 后序的非递归遍历 层次遍历 层次遍历获得每 ...

最新文章

  1. Linux环境变量配置
  2. 最短路径-Floyd(佛洛伊德算法)
  3. Visual Subst - 简单将任意文件夹挂载模拟成驱动器盘符硬盘分区的小工具
  4. kibana操作elasticsearch:匹配查询(match)
  5. 1月3日学习内容整理:modelform
  6. r语言kmodes_聚类分析——k-means算法及R语言实现
  7. SAP License:基于成本的获利分析表CE1-CE4
  8. ural 2023. Donald is a postman
  9. ubuntu14.04 出现symbol lookup error
  10. 程序员面试金典--变位词排序
  11. cmd中,执行java命令与javac命令的区别
  12. 近3年微软与谷歌的发展对比分析
  13. pdf格式文件怎么编辑
  14. win10中计算机是英文的,如何解决Win10启动和登陆界面语言中英文混合显示?
  15. oracle 查询时间段内的天,ORACLE任意时间段内所有天数日期查询
  16. PowerShell install 一键部署VMware_Workstation
  17. Quantopian自学笔记01
  18. 计算机课ps软件,电脑上的ps软件叫什么
  19. 求树的直径算法以及证明
  20. CSS实现有“边框”的下三角

热门文章

  1. linux 文件夹换所属用户,linux普通用户su root切换提示没有文件或目录的解决方法...
  2. 临汾移动搜索引擎推广_竞价信息流移动搜索推广分析!
  3. 湖北大学 计算机考研,湖北大学考研难吗?一般要什么水平才可以进入?
  4. 系统开发基础:UML中图的相关知识笔记(上)
  5. 盘点最经典的外包案例
  6. 关于HTTPS的七个误解
  7. 超融合和服务器关系_超融合与传统服务器区别
  8. 嵌入式C语言基础(二)
  9. python递归迭代_Python入门基础知识点(python迭代器和递归)
  10. 算法【二分查找】(数组)