原题传送门
0.前言 二叉树?暴力吧......数据好弱
1.思路
虽然题名告诉我们是二叉树,但是却并没有和二叉树有太大的关系
与二叉树有关的:前序遍历(先根遍历)顺序 根左右
思路很简单,就是一道直接的暴力(搜索)题
2.代码
#include<iostream>
#include<cstdio>
using namespace std;
inline void read(int &x){ //快读
int f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=x*10+ch-'0';
ch=getchar();
}
x*=f;
}
int n;
char map[30][3]; //存图,i表示第几组数,j表示这一次(输入)的第几个数
inline void search(char x){
if(x!='*'){ //如果不为空
printf("%c",x); //这是一个根,输出
for(int i=1;i<=n;i++){
if(map[i][0]==x){ //如果是一个根
search(map[i][1]); //搜左子树
search(map[i][2]); //搜右子树
}
}
}
return;
}
int main(){
read(n);
for(int i=1;i<=n;i++) cin>>map[i][0]>>map[i][1]>>map[i][2];
search(map[1][0]); //第一个数是根,直接从根开始搜索(根左右)
return 0;
}