#include #include using namespace std; struct Cvor { int val; Cvor *levi = nullptr; Cvor *desni = nullptr; }; void dodaj_sinove(Cvor *otac, int i, vector &origin, int n) { otac->val = origin[i]; int l = 2*i+1; if(llevi = sin; dodaj_sinove(sin, l, origin, n); } int d = 2*i+2; if(ddesni = sin; dodaj_sinove(sin, d, origin, n); } } void ispisi_stablo(Cvor *otac) { if(otac->levi != nullptr) { ispisi_stablo(otac->levi); } cout << otac->val << " "; if(otac->desni != nullptr) { ispisi_stablo(otac->desni); } } void ocisti_stablo(Cvor *otac) { if(otac->levi != nullptr) { ocisti_stablo(otac->levi); } if(otac->desni != nullptr) { ocisti_stablo(otac->desni); } delete otac; } int main() { int n; cin >> n; vector a(n); for(int &x : a) cin >> x; Cvor *glavni = new Cvor; dodaj_sinove(glavni,0,a,n); ispisi_stablo(glavni); cout << endl; ocisti_stablo(glavni); }