Cod sursă (job #178967)

Utilizator avatar theodor.moroianu theodor moroianu theodor.moroianu IP ascuns
Problemă Pointeri Compilator cpp | 0,82 kb
Rundă Arhiva de probleme Status evaluat
Dată 9 ian. 2016 11:02:41 Scor 60
#include <fstream>
using namespace std;

int v_st[200001], v_dr[200001], arb_st[200001], arb_dr[200001];
int prec = -1, prim;

void inordine(int nod);

int main() {
	int n, rad;
	ifstream in("pointeri.in");
	in >> n >> rad;
	for (int i = 0; i < n; i++)
		in >> arb_st[i];
	for (int i = 0; i < n; i++)
		in >> arb_dr[i];
	inordine(rad);
	v_dr[prec] = -1;
	in.close();
	ofstream out("pointeri.out");
	out << prim << '\n';
	for (int i = 0; i < n; i++)
		out << v_st[i] << ' ';
	out << '\n';
	for (int i = 0; i < n; i++)
		out << v_dr[i] << ' ';
	out.close();
	return 0;
}

void inordine(int n) {
	if (arb_st[n] != -1)
		inordine(arb_st[n]);
	if (prec == -1) {
		prim = n;
		v_st[n] = -1;
	}
	else {
		v_dr[prec] = n;
		v_st[n] = prec;
	}
	prec = n;
	if (arb_dr[n] != -1)
		inordine(arb_dr[n]);
}