1417 遍历转换
来源:互联网 发布:php 获取上传图片类型 编辑:程序博客网 时间:2024/06/07 09:59
对于一颗二叉树,如果已知它的前序和中序遍历,我们就可以推出它的树形结构,从而知道它的后序遍历。已知了中序和后序遍历,也同理可求前序。
现在只需要聪明的你,通过前序和中序遍历,求出后序遍历。
- 输入
输入第一行为整数n,表示数据的组数。接下来的2n行,是n组数据。第2k行、第2k+1行各有一个字符串StringLeaf和StringSnow(0 < k < n+1),表示树的前序遍历和中序遍历,字符串仅由‘A’-‘Z’的字母组成。
- 输出
输出有n行,每行一个字符串,为对应的后序遍历。
- 样例输入
2
ABC
BAC
ABDFCE
DBFACE
- 样例输出
BCA
DFBECA
经典问题,三种遍历方式转换
#include <stdio.h>#include <string.h>int find(char c,char A[],int s,int e) /**//* 找出中序中根的位置。 */{int i;for(i=s;i<=e;i++)if(A[i]==c) return i;}/**//* 其中pre[]表示先序序,pre_s为先序的起始位置,pre_e为先序的终止位置。 *//**//* 其中in[]表示中序,in_s为中序的起始位置,in_e为中序的终止位置。 *//**//* pronum()求出pre[pre_s~pre_e]、in[in_s~in_e]构成的后序序列。 */void pronum(char pre[],int pre_s,int pre_e,char in[],int in_s,int in_e){char c;int k;if(in_s>in_e) return ; /**//* 非法子树,完成。 */if(in_s==in_e){printf("%c",in[in_s]); /**//* 子树子仅为一个节点时直接输出并完成。 */return ;}c=pre[pre_s]; /**//* c储存根节点。 */k=find(c,in,in_s,in_e); /**//* 在中序中找出根节点的位置。 */pronum(pre,pre_s+1,pre_s+k-in_s,in,in_s,k-1); /**//* 递归求解分割的左子树。 */pronum(pre,pre_s+k-in_s+1,pre_e,in,k+1,in_e); /**//* 递归求解分割的右子树。 */printf("%c",c); /**//* 根节点输出。 */}main(){ int number;char pre[1000];char in[1000];scanf("%d",&number);while(number--){scanf("%s",&pre);scanf("%s",&in);pronum(pre,0,strlen(in)-1,in,0,strlen(pre)-1);printf("\n");}}
- 1417 遍历转换
- 遍历转换
- 遍历转换
- 遍历转换
- c#枚举遍历(转换)
- [笔记]: 二叉树 遍历转换
- 二叉树的遍历 及前中序转换成后序遍历
- 二叉树的遍历 (二叉树遍历转换)
- 遍历文件及繁简体字转换
- 字符转换函数及其文件夹遍历
- 遍历文件夹并转换文件脚本
- <PY>转换类型:嵌套列表的遍历
- Java枚举变量的遍历与转换
- sql遍历xml,遍历节点并遍历节点值,xm节点属性数据转换成表
- 浏览器 判断 绑定事件 arguments 转换数组 数组遍历
- 清华复试题--树遍历序列的转换
- C++ map 和 list 转换 排序 遍历使用示例
- DOJO遍历DataGrid数据并转换成json格式数据
- ESET nod32
- 1411 自己排序的二叉树
- 为函数指定所有者
- 1412 二叉树的繁茂度
- Spring学习笔记(15)----使用Spring注解方式管理事务
- 1417 遍历转换
- Spring学习笔记(16)----使用Spring配置文件实现事务管理
- 或许过了这段时间就没事了
- 1418 动态顺序统计量
- poj3302
- qt arm configure
- 1419 图的DFS遍历
- 第三章:内核对象
- ASP、JSP、PHP 、Perl、.NET 等WEB开发语言比较