由二叉树的前序遍历(后序遍历)和中序遍历输出后序遍历(前序遍历)

来源:互联网 发布:淘宝网毛绒绒的衣服 编辑:程序博客网 时间:2024/05/22 03:25

由后序遍历和中序遍历输出前序遍历:

#include<cstdio>#include<cstring>#include<iostream>using namespace std;int i;void build(int n,string s1,string s2,char* ans){if(n<=0) return;int p=s2.find(s1[n-1]);  ans[i++]=s1[n-1];    build(p,s1.substr(0,p),s2.substr(0,p),ans);    build(n-p-1,s1.substr(p,n-p-1),s2.substr(p+1,n-p-1),ans);}int main(){    string s1,s2;    char ans[26];    while(cin>>s1>>s2)    {    i=0;    memset(ans,0,sizeof(ans));        int n=s1.length();        build(n,s1,s2,ans);        ans[n]='\0';        printf("%s\n",ans);    }}
由前序遍历和中序遍历输出后序遍历:
#include<cstdio>#include<cstring>#include<iostream>using namespace std;void build(int n,string s1,string s2,char* ans){if(n<=0) return;int p=s2.find(s1[0]);ans[n-1]=s1[0];    build(p,s1.substr(1,p),s2.substr(0,p),ans);    build(n-p-1,s1.substr(p+1,n-p-1),s2.substr(p+1,n-p-1),ans+p);}int main()  {      string s1,s2;      char ans[26];      while(cin>>s1>>s2)      {          memset(ans,0,sizeof(ans));          int n=s1.length();          build(n,s1,s2,ans);  ans[n]='\0';        printf("%s\n",ans);    }  }





0 0