题目传送门<==戳这
先按照输入简单的构建一下这棵树,然后按照前序遍历(根 左 右)的顺序遍历这棵树即可
上代码:
#include <iostream>
#include <cstdio>
using namespace std;
struct tree{
char lc; ==>左儿子char rc; ==>右儿子
}a[200]; ==>这里超级妙,数组下标可以是字符,只不过是以ASCII码的形式储存
char h1,h; ==>主根的数组下标,各个字根的数组下标
void dfs(char root){
if(root=='*') return; ==>递归边界(节点为空时)else{
cout<<root; ==>“根”dfs(a[root].lc); ==>“左”dfs(a[root].rc); ==>“右”}
}
int main(){
int n;cin>>n;cin>>h1; ==>第一行输入的是主根,比较特殊,后面dfs的起点也是主根,所以单独储存一下 cin>>a[h1].lc; ==>输入左儿子cin>>a[h1].rc; ==>输入右儿子for(int i=2;i<=n;i++){
==>继续输入cin>>h;cin>>a[h].lc;cin>>a[h].rc;}dfs(h1); ==>从主根开始dfs
}