Advertisement
Guest User

geor

a guest
Feb 20th, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. /// se viziteaza radacina si apoi dupa fiecare subarbore vizitat se viziteaza din nou radacina(recursiv)
  6.  
  7. vector <int> L[1001];
  8. int n, rad, t[1001], e[2002], len, x;
  9.  
  10. void Citire()
  11. {
  12. cin >> n;
  13. for (int i = 1; i < n; i++)
  14. cin >> t[i];
  15. }
  16.  
  17. int Radacina()
  18. {
  19. for (int i = 1; i <=n; i++)
  20. if (t[i] == 0) return i;
  21. return n;
  22. }
  23.  
  24. void FormareListeAd()
  25. {
  26. for (int i = 1; i <= n; i++)
  27. if (t[i] != 0)
  28. {
  29. x = t[i]; /// avem muchia (x, i)
  30. L[x].push_back(i);
  31. }
  32. }
  33.  
  34. void Euler(int k)
  35. {
  36. e[++len] = k;
  37. for (auto i : L[k])
  38. {
  39. Euler(i);
  40. e[++len] = k;
  41. }
  42. }
  43.  
  44. void Afisare()
  45. {
  46. for(int i = 1; i <= len; i++)
  47. cout << e[i] << " ";
  48. cout << "\n\n";
  49. }
  50.  
  51. int main()
  52. {
  53. Citire();
  54. rad = Radacina();
  55. FormareListeAd();
  56. Euler(rad);
  57. Afisare();
  58.  
  59. return 0;
  60. }
  61. /**
  62. 8
  63. 0 1 1 1 2 3 3 4
  64. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement