#include #include #include struct cvor { int br; struct cvor *l, *d; }; struct cvor *nadji( struct cvor *koren, int cvor ) { if ( koren == NULL ) return NULL; if ( koren -> br == cvor ) return koren; struct cvor *p = nadji( koren -> l, cvor ); if ( p ) return p; return nadji( koren -> d, cvor ); } void provera( struct cvor *koren, int brojOdKogaSviUPodstabluMorajuBitiManji, int brojOdKogaSviUPodstabluMorajuBitiVeci ) { if ( koren -> l ) if ( koren -> l -> br < koren -> br && koren -> l -> br > brojOdKogaSviUPodstabluMorajuBitiVeci ) provera( koren -> l, koren -> br , brojOdKogaSviUPodstabluMorajuBitiVeci ); else printf("%d L\n", koren -> br ); if ( koren -> d ) if ( koren -> d -> br > koren -> br && koren -> d -> br < brojOdKogaSviUPodstabluMorajuBitiManji ) provera( koren -> d, brojOdKogaSviUPodstabluMorajuBitiManji, koren -> br ); else printf("%d D\n", koren -> br ); } int main() { int n, k; scanf("%d%d", &n, &k ); struct cvor koren; koren.br = k; koren.l = koren.d = NULL; int cvor, naslednikLevi, naslednikDesni; scanf("%d", &cvor ); while( cvor ) { scanf("%d%d", &naslednikLevi, &naslednikDesni ); struct cvor *stari = nadji( &koren, cvor ); if ( naslednikLevi ) { struct cvor *novi = ( struct cvor * ) malloc( sizeof( struct cvor ) ); novi -> br = naslednikLevi; novi -> l = novi -> d = NULL; stari -> l = novi; } if ( naslednikDesni ) { struct cvor *novi = ( struct cvor * ) malloc( sizeof( struct cvor ) ); novi -> br = naslednikDesni; novi -> l = novi -> d = NULL; stari -> d = novi; } scanf("%d", &cvor ); } provera( &koren, INT_MAX, -INT_MAX ); return 0; }