首页 > 代码库 > codevs 2010 求后序遍历x
codevs 2010 求后序遍历x
题目描述 Description
输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。
输入描述 Input Description
共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。
输出描述 Output Description
仅一行,表示树的后序遍历序列。
样例输入 Sample Input
abdehicfg
dbheiafcg
样例输出 Sample Output
dhiebfgca
数据范围及提示 Data Size & Hint
输入长度不大于255。
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 5 using namespace std; 6 7 /* 8 s1=abdehicfg 9 s2=dbheiafcg 10 */ 11 12 string s1,s2;//定义输入的字符串 13 14 void calc(int l1,int r1,int l2,int r2) 15 { 16 int m=s2.find(s1[l1]); 17 /* 18 从s2中寻找s1的第一个字符,样例中为a,返回5,m=5 19 此时l2为0 20 故m>l2,将l1=l1(0)+m(5)-l2(0)+1=6,r1不变,l2=m+1=5+1=6,r2不变; 21 所以变成6,8,6,8 22 ……………… 23 最后输出 24 */ 25 if(m>l2) calc(l1+1,l1+m-l2,l2,m-1); 26 if(m<r2) calc(l1+m-l2+1,r1,m+1,r2); 27 cout<<s1[l1]; 28 } 29 30 int main() 31 { 32 cin>>s1>>s2; 33 calc(0,s1.length()-1,0,s2.length()-1);//从寻找s1中第0个字符开始 34 //r1初始状态为s1的长度减去1,(因为数组是从0开始计数)r2初始状态为s2的长度减去1 35 cout<<endl; 36 return 0; 37 }
codevs 2010 求后序遍历x
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。