二叉树遍历(已知先序、中序求后序)

来源:互联网 发布:医疗大数据国内外现状 编辑:程序博客网 时间:2024/06/05 16:43

【例3-4】求后序遍历


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 11     通过数: 9 

【题目描述】

输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。

【输入】

共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。树的结点一律用小写字母表示。

【输出】

一行,表示树的后序遍历序列。

【输入样例】

abdecdbeac

【输出样例】

debca

【来源】


No

提交 统计信息


代码:

#include<iostream>#include<cstring>using namespace std;string s1,s2;void calc(int l1,int r1,int l2,int r2){int m=s2.find(s1[l1]);//找到根节点在中序遍历中的位置 if(m>l2) calc(l1+1,m-l2+l1,l2,m-1);//遍历左子树 if(m<r2) calc(m-l2+l1+1,r1,m+1,r2);//遍历右子树 cout<<s1[l1];//输出根节点 }int main(){cin>>s1>>s2;calc(0,s1.length()-1,0,s2.length()-1);cout<<endl;return 0;} 


阅读全文
0 0
原创粉丝点击