题目描述
输入一串二叉树,输出其前序遍历。
输入格式
第一行为二叉树的节点数 n。(1≤n≤26)
后面 n行,每一个字母为节点,后两个字母分别为其左右儿子。
空节点用 *
表示
输出格式
二叉树的前序遍历。
输入输出样例
输入 #1复制
6 abc bdi cj* d** i** j**
输出 #1复制
abdicj
水题
#include<bits/stdc++.h>
using namespace std;
struct tree {
char L,R,fa;//存储每个结点的左右结点和父结点
}a[1100];
int n;
char b,c,d;
int t1, t2, t3,flag=0;
void dfs(char x) {
printf("%c", x);
if (a[x].L!='*')dfs(a[x].L);
if (a[x].R!='*')dfs(a[x].R);
}
int main(){
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf(" %c",&b);//每次的父结点
if(i==1)flag=b;//记录根结点
scanf("%c%c",&a[b].L,&a[b].R);//录入相应头节点的左右结点
a[a[c].L].fa=a[a[c].R].fa=b;//记录左右结点的父节点
}
dfs(flag);//从根结点开始递归
return 0;
}