#include <iostream>
#include <vector>
#include <string>
using namespace std;
// Функція для інфіксного обходу
void inOrder( const vector< string> & arr, int index) {
if ( index >= arr.size ( ) || arr[ index] == " " ) return ;
inOrder( arr, 2 * index + 1 ) ;
cout << arr[ index] << " " ;
inOrder( arr, 2 * index + 2 ) ;
}
// Функція для префіксного обходу
void preOrder( const vector< string> & arr, int index) {
if ( index >= arr.size ( ) || arr[ index] == " " ) return ;
cout << arr[ index] << " " ;
preOrder( arr, 2 * index + 1 ) ;
preOrder( arr, 2 * index + 2 ) ;
}
// Функція для постфіксного обходу
void postOrder( const vector< string> & arr, int index) {
if ( index >= arr.size ( ) || arr[ index] == " " ) return ;
postOrder( arr, 2 * index + 1 ) ;
postOrder( arr, 2 * index + 2 ) ;
cout << arr[ index] << " " ;
}
int main( ) {
int n;
cout << "Введіть кількість елементів у дереві: " ;
cin >> n;
vector< string> arr( n) ;
cout << "Введіть елементи дерева (використовуйте пробіл ' ' для порожніх вузлів):\n " ;
for ( int i = 0 ; i < n; ++ i) {
cin >> arr[ i] ;
}
cout << "\n Інфіксний обхід: " ;
inOrder( arr, 0 ) ;
cout << "\n Префіксний обхід: " ;
preOrder( arr, 0 ) ;
cout << "\n Постфіксний обхід: " ;
postOrder( arr, 0 ) ;
cout << endl;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vINCk0YPQvdC60YbRltGPINC00LvRjyDRltC90YTRltC60YHQvdC+0LPQviDQvtCx0YXQvtC00YMKdm9pZCBpbk9yZGVyKGNvbnN0IHZlY3RvcjxzdHJpbmc+JiBhcnIsIGludCBpbmRleCkgewogICAgaWYgKGluZGV4ID49IGFyci5zaXplKCkgfHwgYXJyW2luZGV4XSA9PSAiICIpIHJldHVybjsKICAgIGluT3JkZXIoYXJyLCAyICogaW5kZXggKyAxKTsKICAgIGNvdXQgPDwgYXJyW2luZGV4XSA8PCAiICI7CiAgICBpbk9yZGVyKGFyciwgMiAqIGluZGV4ICsgMik7Cn0KCi8vINCk0YPQvdC60YbRltGPINC00LvRjyDQv9GA0LXRhNGW0LrRgdC90L7Qs9C+INC+0LHRhdC+0LTRgwp2b2lkIHByZU9yZGVyKGNvbnN0IHZlY3RvcjxzdHJpbmc+JiBhcnIsIGludCBpbmRleCkgewogICAgaWYgKGluZGV4ID49IGFyci5zaXplKCkgfHwgYXJyW2luZGV4XSA9PSAiICIpIHJldHVybjsKICAgIGNvdXQgPDwgYXJyW2luZGV4XSA8PCAiICI7CiAgICBwcmVPcmRlcihhcnIsIDIgKiBpbmRleCArIDEpOwogICAgcHJlT3JkZXIoYXJyLCAyICogaW5kZXggKyAyKTsKfQoKLy8g0KTRg9C90LrRhtGW0Y8g0LTQu9GPINC/0L7RgdGC0YTRltC60YHQvdC+0LPQviDQvtCx0YXQvtC00YMKdm9pZCBwb3N0T3JkZXIoY29uc3QgdmVjdG9yPHN0cmluZz4mIGFyciwgaW50IGluZGV4KSB7CiAgICBpZiAoaW5kZXggPj0gYXJyLnNpemUoKSB8fCBhcnJbaW5kZXhdID09ICIgIikgcmV0dXJuOwogICAgcG9zdE9yZGVyKGFyciwgMiAqIGluZGV4ICsgMSk7CiAgICBwb3N0T3JkZXIoYXJyLCAyICogaW5kZXggKyAyKTsKICAgIGNvdXQgPDwgYXJyW2luZGV4XSA8PCAiICI7Cn0KCmludCBtYWluKCkgewogICAgaW50IG47CiAgICBjb3V0IDw8ICLQktCy0LXQtNGW0YLRjCDQutGW0LvRjNC60ZbRgdGC0Ywg0LXQu9C10LzQtdC90YLRltCyINGDINC00LXRgNC10LLRljogIjsKICAgIGNpbiA+PiBuOwogICAgdmVjdG9yPHN0cmluZz4gYXJyKG4pOwogICAgY291dCA8PCAi0JLQstC10LTRltGC0Ywg0LXQu9C10LzQtdC90YLQuCDQtNC10YDQtdCy0LAgKNCy0LjQutC+0YDQuNGB0YLQvtCy0YPQudGC0LUg0L/RgNC+0LHRltC7ICcgJyDQtNC70Y8g0L/QvtGA0L7QttC90ZbRhSDQstGD0LfQu9GW0LIpOlxuIjsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgY2luID4+IGFycltpXTsKICAgIH0KCiAgICBjb3V0IDw8ICJcbtCG0L3RhNGW0LrRgdC90LjQuSDQvtCx0YXRltC0OiAiOwogICAgaW5PcmRlcihhcnIsIDApOwogICAgY291dCA8PCAiXG7Qn9GA0LXRhNGW0LrRgdC90LjQuSDQvtCx0YXRltC0OiAiOwogICAgcHJlT3JkZXIoYXJyLCAwKTsKICAgIGNvdXQgPDwgIlxu0J/QvtGB0YLRhNGW0LrRgdC90LjQuSDQvtCx0YXRltC0OiAiOwogICAgcG9zdE9yZGVyKGFyciwgMCk7CiAgICBjb3V0IDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=