题目描述
输入一串二叉树,用遍历前序打出。
输入输出格式
输入格式:
第一行为二叉树的节点数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;
// }
}