题目描述
输入一串二叉树,输出其前序遍历。
输入格式
第一行为二叉树的节点数 𝑛。(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博客,非常详细的树的三种遍历
加油