知道后中序遍历,求前

    xiaoxiao2021-03-25  53

    #include <iostream> #include <string.h> #include <stdio.h> using namespace std; struct ttt{ int l,r,w; }; char q1[50]; char q2[50]; ttt qq[500]; int walked[500]; int n; int gg; int tt; int tree(int x,int y,int m,int w){ cout << x <<"----- " << y << " --- " <<endl; int k=x; if(x>y)return 0; while(k<=y){ if(q1[tt]==q2[k]){ break; } k++; } if(k>y)return 0; gg++; qq[gg].w=tt; int g1=gg; cout << "YES K= " << k<< endl; if(m==0){ qq[w].l=g1; }else if(m==1){ qq[w].r=g1; } tt--; tree(k+1,y,1,g1); tree(x,k-1,0,g1); } int dfs1(int n){ cout << q1[qq[n].w]; if(qq[n].l!=0)dfs1(qq[n].l); if(qq[n].r!=0)dfs1(qq[n].r); } int dfs2(int n){ if(qq[n].l!=0)dfs2(qq[n].l); cout << q1[qq[n].w]; if(qq[n].r!=0)dfs2(qq[n].r); } int dfs3(int n){ if(qq[n].l!=0)dfs3(qq[n].l); if(qq[n].r!=0)dfs3(qq[n].r); cout << q1[qq[n].w]; } int main(){ freopen("in.txt","r",stdin); int i,j,k,f1,f2,f3,t2,t3; int m; int t1=0; cin >>n; for(i=1;i<=n;i++){ cin >> q1[i]; } for(i=1;i<=n;i++){ cin >> q2[i]; } memset(walked,0,sizeof(walked)); gg=0; tt=n; tree(1,n,-1,0); for(i=1;i<=n;i++) cout << i <<"是" << q1[qq[i].w]<< " 左儿子是" << qq[i].l << "右儿子是" <<qq[i].r<< endl; dfs1(1); cout << endl; dfs2(1); cout << endl; dfs3(1); cout << endl; return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-27461.html

    最新回复(0)