Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- /// se viziteaza radacina si apoi dupa fiecare subarbore vizitat se viziteaza din nou radacina(recursiv)
- vector <int> L[1001];
- int n, rad, t[1001], e[2002], len, x;
- void Citire()
- {
- cin >> n;
- for (int i = 1; i < n; i++)
- cin >> t[i];
- }
- int Radacina()
- {
- for (int i = 1; i <=n; i++)
- if (t[i] == 0) return i;
- return n;
- }
- void FormareListeAd()
- {
- for (int i = 1; i <= n; i++)
- if (t[i] != 0)
- {
- x = t[i]; /// avem muchia (x, i)
- L[x].push_back(i);
- }
- }
- void Euler(int k)
- {
- e[++len] = k;
- for (auto i : L[k])
- {
- Euler(i);
- e[++len] = k;
- }
- }
- void Afisare()
- {
- for(int i = 1; i <= len; i++)
- cout << e[i] << " ";
- cout << "\n\n";
- }
- int main()
- {
- Citire();
- rad = Radacina();
- FormareListeAd();
- Euler(rad);
- Afisare();
- return 0;
- }
- /**
- 8
- 0 1 1 1 2 3 3 4
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement