题目描述
输入一串二叉树,输出其前序遍历。
输入格式
第一行为二叉树的节点数 n。(1≤n≤2^6)
后面 n 行,每一个字母为节点,后两个字母分别为其左右儿子。特别地,数据保证第一行读入的节点必为根节点。
空节点用 *
表示
输出格式
二叉树的前序遍历。
注:
二叉树前序遍历:前序遍历的记忆法则是“根左右",即先遍历根节点,再遍历左子树节点,再遍历右子树节点。
代码
#include<bits/stdc++.h>
using namespace std;
struct MyStruct
{
char l, r; //左节点 右节点
}tree[200];
void dfs(char pos)
{
cout << pos;
if (tree[pos].l != '*') dfs(tree[pos].l);
if (tree[pos].r != '*') dfs(tree[pos].r);
}
int main()
{
int n;
char a, l, r, bg;
cin >> n;
cin >> bg >> l >> r;
tree[bg].l = l;
tree[bg].r = r;
for (int i = 0; i < n - 1; i++)
{
cin >> a >> l >> r;
tree[a].l = l;
tree[a].r = r;
}
dfs(bg);
return 0;
}