Nie możesz zejść aż tak nisko do tego węzła, bo nie masz możliwości uzyskania informacji o ojcu i o bracie. Musisz sprawdzać wartości synów węzła czyli coś takiego (dawno nie pisałem w tym języku kodu, więc jakby były jakieś drobne błędy to popraw ale powinno być ok, ogólnie to myślę, że ideę widać):
Kod: Zaznacz cały
void wartosciSasiednie(wezel* korzen, int wartosc)
{
if(wartosc==0 || korzen==NULL)
return;
if(korzen->lewy != NULL && korzen->lewy->elem==wartosc)
{
cout << "Wartość ojca: " << korzen->elem << endl;
if(korzen->prawy == NULL) cout << "Brat jest nullem" << endl;
else cout << "Wartość brata: " << korzen->prawy->elem << endl;
return;
}
if(korzen->prawy != NULL && korzen->prawy->elem==wartosc)
{
\tu wstaw kod analogiczny do powyższego
return;
}
wartosciSasiednie(korzen->lewy,wartosc);
wartosciSasiednie(korzen->prawy,wartosc);
}
Swoją drogą dlaczego odrzucasz możliwość, że węzeł mógłby mieć wartość
\(\displaystyle{ 0}\)?