题目描述
输入一串二叉树,输出其前序遍历。
输入格式
第一行为二叉树的节点数 𝑛。(1≤𝑛≤26)
后面 𝑛 行,每一个字母为节点,后两个字母分别为其左右儿子。特别地,数据保证第一行读入的节点必为根节点。
空节点用 *
表示
输出格式
二叉树的前序遍历。
这道题就是树最基本的遍历
代码如下:
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 30;
struct node{
char left;
char right;
}a[MAXN];
int n;
void dfs(char x){
cout << x ;
if(a[x].left != '*') dfs(a[x].left);
if(a[x].right != '*') dfs(a[x].right);
return ;
}
int main()
{
cin >> n;
char first;
for(int i=0;i<n;i++){
string s;
cin >> s;
if(i == 0) first = s[0];
a[s[0]].left = s[1],a[s[0]].right = s[2];
// cout << a[s[0]].left << " ";
}
dfs(first);
return 0;
}
如果有不懂的地方可以去看洛谷B3642 二叉树的遍历(前序、中序、后序)-CSDN博客,非常详细的树的三种遍历
加油