用IDA打开 主函数只有简单几行
直接运行
一共是有三种遍历方式 第三种没给出 推测应该就是flag了 再结合输出的提示–左右
应该是二叉树的三种遍历方式 再查看type1、2代码
type1:中序遍历(左中右)
type2:后序遍历(左右中)
那么type3应该就是先序遍历了
写脚本解出
#include<iostream>
using namespace std;
char post[] = "20f0Th{2tsIS_icArE}e7__w"; // 后序遍历结果
char mid[] = "2f0t02T{hcsiI_SwA__r7Ee}"; // 中序遍历结果
void pre(int root, int start, int end)
{
if(start > end)
return ;
int i = start;
while(i < end && mid[i] != post[root]) i++; //定位根在中序的位置
cout<<mid[i];
pre(root - 1 - (end - i), start, i - 1); //递归处理左子树
pre(root - 1, i + 1, end); //递归处理右子树
}
int main()
{
pre(24, 0, 24);
return 0;
}
wctf2020{This_IS_A_7reE}