题目描述
输入一串二叉树,用遍历前序打出。
输入输出格式
输入格式:
第一行为二叉树的节点数n。(n≤26 )
后面n行,每一个字母为节点,后两个字母分别为其左右儿子。
空节点用*表示
输出格式:
前序排列的二叉树
// luogu-judger-enable-o2 #include<iostream> #include<cstdio> using namespace std; int x[10005],n,a,b,c,zt,pnt; char y; void print(int s) { if(pnt==n) { return; } if(x[s]!=0) { y=x[s]-1+'a'; x[s]=0; cout<<y; pnt++; } if(x[s*2]!=0) { print(s*2); } else { if(x[s*2+1]!=0) { print(s*2+1); } else { if(s%2==0) { print(s/2); } else { s--; print(s/2); } } } } int main() { cin>>n; for(a=1;a<=n;a++) { for(b=1;b<=3;b++) { cin>>y; if(y=='*') { continue; } else { if(a==1&&b==1) { x[1]=y-'a'+1; } if(b==1) { for(c=1;c<=3000;c++) { if(x[c]==y-'a'+1) { zt=c; break; } } } if(b==2) { x[zt*2]=y-'a'+1; } if(b==3) { x[zt*2+1]=y-'a'+1; } } } } print(1); // for(a=1;a<=50;a++) // { // y=x[a]-1+'a'; // cout<<y; // } }