【树的遍历】前序中序求后序,中序后序求前序
1>求前序 #include<cstdio> #include<cstdlib> #include<iostream> using namespace std; string m,f; int len,mid[30],front[30]; int son[30][2],root; int fz(int l1,int r1,int l2,int r2) { if(l1>r1) return 0; if(l1==r1) return front[l1]; int rt=front[l1]; int pos; for(pos=l2;pos<r2;pos++) if(mid[pos]==rt) break; int ln=pos-l2; son[rt][0]=fz(l1+1,l1+ln, l2,l2+ln-1); son[rt][1]=fz(l1+ln+1,r1, l2+ln+1,r2); return rt; } void back(int rt) { if(son[rt][0]) back(son[rt][0]); if(son[rt][1]) back(son[rt][1]); printf("%c",'A'+rt-1); } int main() { cin>>m>>f; len=m.length() ; for(int i=0;i<len;i++) mid[i]=m[i]-'A'