fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. // Функція для інфіксного обходу
  8. void inOrder(const vector<string>& arr, int index) {
  9. if (index >= arr.size() || arr[index] == " ") return;
  10. inOrder(arr, 2 * index + 1);
  11. cout << arr[index] << " ";
  12. inOrder(arr, 2 * index + 2);
  13. }
  14.  
  15. // Функція для префіксного обходу
  16. void preOrder(const vector<string>& arr, int index) {
  17. if (index >= arr.size() || arr[index] == " ") return;
  18. cout << arr[index] << " ";
  19. preOrder(arr, 2 * index + 1);
  20. preOrder(arr, 2 * index + 2);
  21. }
  22.  
  23. // Функція для постфіксного обходу
  24. void postOrder(const vector<string>& arr, int index) {
  25. if (index >= arr.size() || arr[index] == " ") return;
  26. postOrder(arr, 2 * index + 1);
  27. postOrder(arr, 2 * index + 2);
  28. cout << arr[index] << " ";
  29. }
  30.  
  31. int main() {
  32. int n;
  33. cout << "Введіть кількість елементів у дереві: ";
  34. cin >> n;
  35. vector<string> arr(n);
  36. cout << "Введіть елементи дерева (використовуйте пробіл ' ' для порожніх вузлів):\n";
  37. for (int i = 0; i < n; ++i) {
  38. cin >> arr[i];
  39. }
  40.  
  41. cout << "\nІнфіксний обхід: ";
  42. inOrder(arr, 0);
  43. cout << "\nПрефіксний обхід: ";
  44. preOrder(arr, 0);
  45. cout << "\nПостфіксний обхід: ";
  46. postOrder(arr, 0);
  47. cout << endl;
  48.  
  49. return 0;
  50. }
Success #stdin #stdout 0.01s 5324KB
stdin
3 '+', 'a', 'b'
stdout
Введіть кількість елементів у дереві: Введіть елементи дерева (використовуйте пробіл ' ' для порожніх вузлів):

Інфіксний обхід: 'a', '+', 'b' 
Префіксний обхід: '+', 'a', 'b' 
Постфіксний обхід: 'a', 'b' '+',