题目描述
输入一串二叉树,输出其前序遍历。
原题链接:
P1305 新二叉树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
输入格式
第一行为二叉树的节点数 n。(1≤n≤26)
后面 n 行,每一个字母为节点,后两个字母分别为其左右儿子。特别地,数据保证第一行读入的节点必为根节点。
空节点用 * 表示
输出格式
二叉树的前序遍历。
输入输出样例
输入:
6
abc
bdi
cj*
d**
i**
j**
输出:
abdicj
AC代码
#include<bits/stdc++.h>
using namespace std;
int n,i,root;
struct da
{
char l;
char r;
}t[27];
void pre(char root) //先序遍历 也叫前序遍历
{
if(root=='*') return ;
cout<<root;
pre(t[root].l );
pre(t[root].r );
return ;
}
int main()
{
cin>> n;
for(i=0;i<n;i++)
{
char a;
cin>>a;
cin>>t[a].l >>t[a].r ; //存储~
if(i==0)
root=a; //找到根节点
}
pre(root); //根节点进入per函数进行先序遍历
return 0;
}
思路:
签到题,重点是如何存储二叉树以及二叉树的先序遍历,可以设置一个结构体里面存储该节点的左右孩子(l和r)。题目已知第一个点必为树根,那么我们将树根这个点进入pre函数中,按照根节点--左孩子--右孩子递归的方式,先序输出该二叉树。
注:代码仅供参考,如有错误,请多多指正。