#include #define MAX 1000 int N, prefix_pos = 0, infix_pos = 0; // počet prvků; pozice v prefixu a infixu int prefix[MAX], infix[MAX]; // prefixový a infixový zápis void vypisuj_postfix(int rodic) // rekurzivní výpis { if (infix[infix_pos] == rodic || prefix_pos >= N) return; int hodnota = prefix[prefix_pos++]; // kořen podstromu vypisuj_postfix(hodnota); // vypíšeme levý podstrom infix_pos++; // posuneme se v infixu vypisuj_postfix(rodic); // vypíšeme pravý podstrom printf("%d ", hodnota); // nakonec vypíšeme samotný kořen } int main() { scanf("%d", &N); // načteme zápisy for (int i = 0; i < N; i++) scanf("%d", &prefix[i]); for (int i = 0; i < N; i++) scanf("%d", &infix[i]); vypisuj_postfix(-1); // vypíšeme postfixový zápis return 0; }