博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nyoj756_重建二叉树_先序遍历
阅读量:5033 次
发布时间:2019-06-12

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

重建二叉树

时间限制:
1000 ms  |  内存限制:65535 KB
难度:
3
 
描述
题目很简单,给你一棵二叉树的后序和中序序列,求出它的前序序列(So easy!)。
 
输入
输入有多组数据(少于100组),以文件结尾结束。
每组数据仅一行,包括两个字符串,中间用空格隔开,分别表示二叉树的后序和中序序列(字符串长度小于26,输入数据保证合法)。
输出
每组输出数据单独占一行,输出对应得先序序列。
样例输入
ACBFGED ABCDEFGCDAB CBAD
样例输出
DBACEGFBCAD
来源
上传者
解题思路:因为之前做过两个输出后序遍历的,所以用之前的方法做的,但递归的时候想错了,结果差点以为这种方法做不出来。
  
#include 
#include
#include
using namespace std;char subs[30];char tmp[30];char in[30];int t[30]={
0};void traverse(int s1,int s2,int n){ if(n==1){ printf("%c",tmp[s1]); return ; } if(n<=0){ return ; } t[s1]=1; int i; for(i=0;tmp[s1]!=in[s2+i];i++); printf("%c",tmp[s1]); traverse(s1+(n-i),s2,i);//第一个参数应该是s1+(n-i) traverse(s1+1,s2+i+1,n-i-1);}int main(){ while(scanf("%s %s",subs+1,in+1)!=EOF){ memset(t,0,sizeof(t)); int cou=1; int len=strlen(subs+1); for(int i=len;i>0;i--){ tmp[cou++]=subs[i]; } traverse(1,1,len); printf("\n"); } return 0;}

 

转载于:https://www.cnblogs.com/TWS-YIFEI/p/5826731.html

你可能感兴趣的文章
HDU 1548 A strange lift (Dijkstra)
查看>>
每天一个小程序—0005题(批量处理图片大小)
查看>>
C# 启动进程和杀死进程
查看>>
tcp实现交互
查看>>
IIS的各种身份验证详细测试
查看>>
JavaScript特效源码(3、菜单特效)
查看>>
【转】MySQL执行计划分析
查看>>
Gelfond 的恒等式
查看>>
django的logger日志模块
查看>>
Fedora下安装虚拟机VirtualBox
查看>>
@MarkFan 口语练习录音 20140406 [美女与野兽的口语练习录音]
查看>>
eclipse集成maven
查看>>
设计模式----中介者模式及简单总结(2018/10/30)
查看>>
vue封装组件
查看>>
一个Apache安装多个版本的PHP
查看>>
<a>锚链接的功能取消
查看>>
转载: input 的css技巧
查看>>
二分查找
查看>>
怎样使用 CCache 进行 cocos2d-x 编译加速
查看>>
03、介绍一下你对浏览器内核的理解
查看>>