Pagini recente » Cod sursa (job #193482) | Cod sursa (job #249755) | Cod sursa (job #2541889) | Cod sursa (job #2314132) | Cod sursa (job #2755024)
#include <iostream>
#include<fstream>
using namespace std;
int inordine[500005], preordine[500005], pozitie[500005], arbore[500005][2], aux =1;
int constr_arbore(int stanga, int dreapta)
{
int nod = preordine[aux];
if(stanga<=pozitie[nod]-1) {
aux++;
arbore[nod][0] = constr_arbore(stanga, pozitie[nod]-1);
}
else
arbore[nod][0] = 0;
if(pozitie[nod]+1<=dreapta) {
aux++;
arbore[nod][1] = constr_arbore(pozitie[nod]+1, dreapta);
}
else
arbore[nod][1] = 0;
return nod;
}
int main()
{
int n;
ifstream f("curatenie.in");
f>>n;
//citesc parcurgerea inordine
for(int i = 1; i<=n ; i++)
{
f>>inordine[i];
pozitie[inordine[i]] = i;
}
//citesc parcurgerea preordine - nod 1 = radacine arbore
for(int i = 1; i<=n; i++)
f>>preordine[i];
f.close();
constr_arbore(1, n);
ofstream g("curatenie.out");
for(int i=1; i<=n; i++)
g<<arbore[i][0]<<" "<<arbore[i][1]<<"\n";
g.close();
}