题目描述
输入二叉树,输出其前序遍历。
输入
第一行表示二叉树的结点数n(n<=26)
此后n行,每一个字母为结点,后两个字母分别为其左右儿子。数据保证第一行读入的结点必为根结点。
空结点用#表示
输出
二叉树的前序遍历
样例输入
6 abc bdi cj# d## i## j##
样例输出
abdicj
参考代码:
#include<bits/stdc++.h>
using namespace std;
int n;
char c,s[30],a[30][2],x,y;
int find(char k){
for(int i=1;i<=n;i++)
if(s[i]==k)
return i;
}
void f(int i){
cout<<s[i];
if(a[i][0]!='#')
f(find(a[i][0]));
if(a[i][1]!='#')
f(find(a[i][1]));
return;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>c;
cin>>x;
cin>>y;
a[i][0]=x;
a[i][1]=y;
s[i]=c;
}
f(1);
return 0;
}