洛谷P1305 新二叉树 题解
题目链接:P1305 新二叉树
题意:
输入一串二叉树,输出其前序遍历。
输入1:
6 abc bdi cj* d** i** j**
输出1:
abdicj
虽然是大水题,但是有个解法还是很妙的
利用前序遍历的性质,它的子树一定在它后面。
直接贴代码了,感觉很妙:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iomanip>
#include <random>
using namespace std;
#define int long long
#define INF 0x3f3f3f3f3f3f3f3f
#define N (int)()
int n;
string s,t;
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
// freopen("check.in","r",stdin);
// freopen("check.out","w",stdout);
cin >> n >> s;
for(int i=2; i<=n; i++)
{
cin >> t;
int x=s.find(t[0]);
s.erase(x,1); s.insert(x,t);
}
for(int i=0; i<s.size(); i++)
if(s[i]!='*') cout << s[i];
return 0;
}