Guest User

Untitled

a guest
Nov 21st, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. struct Cvor {
  8. Cvor(char c):vrednost(c){};
  9. char vrednost;
  10. Cvor *levo = nullptr;
  11. Cvor *desno = nullptr;
  12. };
  13.  
  14. /* ---- Pomocne funkcije ------- */
  15.  
  16. void LKD(Cvor *koren)
  17. {
  18. if(koren != nullptr)
  19. {
  20. LKD(koren->levo);
  21. cout << koren->vrednost << " ";
  22. LKD(koren->desno);
  23. }
  24. }
  25.  
  26. void KLD(Cvor *koren)
  27. {
  28. if(koren != nullptr)
  29. {
  30. cout << koren->vrednost << " ";
  31. KLD(koren->levo);
  32. KLD(koren->desno);
  33. }
  34. }
  35.  
  36. void LDK(Cvor* koren)
  37. {
  38. if(koren != nullptr)
  39. {
  40. LDK(koren->levo);
  41. LDK(koren->desno);
  42. cout << koren->vrednost << " ";
  43. }
  44.  
  45. }
  46.  
  47. void oslobodi(Cvor *koren)
  48. {
  49. if(koren != nullptr)
  50. {
  51. oslobodi(koren->levo);
  52. oslobodi(koren->desno);
  53. delete koren;
  54. }
  55. }
  56.  
  57. Cvor* rekonstrukcija(int lkd_l, int lkd_d, int kld_l, int kld_d,
  58. vector<char> &LKD, vector<char> &KLD)
  59. {
  60. int i;
  61. Cvor* koren = new Cvor(KLD[kld_l]);
  62. for(i = lkd_l; i <= lkd_d; i++)
  63. if(LKD[i] == koren->vrednost)
  64. break;
  65.  
  66. if(i > lkd_d)
  67. {
  68. cerr << "Neispravni obilasci!" << endl;
  69. exit(EXIT_FAILURE);
  70. }
  71.  
  72. koren->levo = rekonstrukcija(lkd_l, i - 1, kld_l + 1, kld_l + i - lkd_l, LKD, KLD);
  73. koren->desno = rekonstrukcija(i+1, lkd_d, kld_l + i - lkd_l + 1, kld_d, LKD, KLD);
  74. return koren;
  75. }
  76.  
  77.  
  78. int main()
  79. {
  80. vector<char> LKD;
  81. vector<char> KLD;
  82. int n;
  83. char c;
  84.  
  85. cout << "Broj cvorova: ";
  86. cin >> n;
  87.  
  88. if(n <= 0)
  89. {
  90. cerr << "Neispravan broj cvorova!" << endl;
  91. return -1;
  92. }
  93.  
  94. cout << "LKD: ";
  95. for(int i = 0; i < n; i++)
  96. {
  97. cin >> c;
  98. LKD.push_back(c);
  99. }
  100.  
  101. cin.get(c);
  102.  
  103. cout << "KLD: ";
  104. for(int i = 0; i < n; i++)
  105. {
  106. cin >> c;
  107. KLD.push_back(c);
  108. }
  109.  
  110. Cvor* koren = rekonstrukcija(0, n-1, 0, n-1, LKD, KLD);
  111.  
  112. LKD(koren);
  113. cout << endl;
  114. KLD(koren);
  115. cout << endl;
  116. LDK(koren);
  117. cout << endl;
  118.  
  119. oslobodi(koren);
  120. return 0;
  121. }
Add Comment
Please, Sign In to add comment