题目描述
输入一串二叉树,用遍历前序打出。
输入输出格式
输入格式:第一行为二叉树的节点数n。
后面n行,每一个字母为节点,后两个字母分别为其左右儿子。
空节点用*表示
输出格式:前序排列的二叉树
输入输出样例
输入样例#1:
6 abc bdi cj* d** i** j**
输出样例#1:
abdicj
一开始按照正常的思路:建树,遍历
然而 建树 出了些问题,卡了半小时。。。
后来边 读入 边 遍历,省去 建树 过程,居然也过了。。。
附代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int n,rt=1;
char a[30][3];
void dfs(char rt){
if(rt!='*'){
printf("%c",rt);
for(int i=1;i<=n;i++)
if(a[i][0]==rt){
dfs(a[i][1]);
dfs(a[i][2]);
break;
}
}
return;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("\n%c%c%c",&a[i][0],&a[i][1],&a[i][2]);
dfs(a[1][0]);
return 0;
}