- 继续重刷树
- 这是道模板题
- 主要知识点在于树的遍历
- 先序,中序,后序什么的都可以看书
- 画图太麻烦就不画了
- 简单总结一句话:遍历树的时候在左节点、右节点、和当前节点这三者中,在什么顺序输出当前节点就是什么序。
- 例:当前节点→左节点→右节点:先序
- 题解如下:
#include<bits/stdc++.h>
using namespace std;
char s[110];
int ls,j=0,k=0;
struct cyy{
int l,r;
char x;
}a[110];
void f(int i){
if(s[++j]=='\n') return;
if(s[j]=='.') return;
a[i].x=s[j],a[i].l=++k;
f(a[i].l);
a[i].r=++k;
f(a[i].r);
}
void zhong(int i){
if(a[i].x==0) return;
zhong(a[i].l);
cout<<a[i].x;
zhong(a[i].r);
}
void hou(int i){
if(a[i].x==0) return;
hou(a[i].l);
hou(a[i].r);
cout<<a[i].x;
}
int main()
{
cin>>s+1;
ls=strlen(s);
f(0);
zhong(0);
cout<<endl;
hou(0);
return 0;
}