二叉树 根据中序与(前序,后序,层序)建立二叉树!
根据前中序建立二叉树并后序,层序输出
输入第一行n,第二行前序,第三行中序
7
4 1 3 2 6 5 7
1 2 3 4 5 6 7
#include <iostream>
#include <cstring>
#include <map>
#include <algorithm>
using namespace std;
using ll = long long;
const int N = 110;
int n;
int pr[N];
int in[N];
map<int, int> tr;
void pr_in_dfs(int il, int ir, int pl, int idx)
{
if(il > ir) return;
int cnt = il;
while(cnt < ir && in[cnt] != pr[pl]) cnt ++;
tr[idx] = pr[pl];
pr_in_dfs(il, cnt - 1, pl+1, idx << 1);
pr_in_dfs(cnt + 1, ir, pl+1+cnt-il, idx << 1 | 1);
}
void le_print()
{
auto it = tr.begin();
printf("%d", it->second);
while(++it != tr.end()) printf(" %d",it->second);
}
void po_print(int u)
{
if(tr.count(u << 1)) po_print(u << 1);
if(tr.count(u