[C++] drzewa binarne - wypisanie najdłuższej ścieżki

anilahcim
Użytkownik
Użytkownik
Posty: 209
Rejestracja: 13 lip 2012, o 14:32
Płeć: Kobieta
Lokalizacja: Pcim
Podziękował: 107 razy

[C++] drzewa binarne - wypisanie najdłuższej ścieżki

Post autor: anilahcim »

Mam problem z napisaniem kodu, który wypisywałby najdłuższą ścieżkę (rekurencyjnie). Chyba nie do końca rozumiem, jak działa rekurencja jeśli chodzi o drzewa binarne, dlatego nie wiem, jak napisać tę funkcję. Próbowałam skorzystać z funkcji na wysokość, ale nie mam pomysłu, co zrobić, żeby ją wypisać.

Kod: Zaznacz cały

int wysokosc(wezel*d)
{
   if(d==NULL)
      return 0;
   else
   {
      int hl=wysokosc(d->lewy);
      int hp=wysokosc(d->prawy);
      if(hl>hp)
            return (hl+1);
      else
            return (hp+1);
   }
}
siryj
Użytkownik
Użytkownik
Posty: 33
Rejestracja: 2 gru 2012, o 17:10
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 1 raz
Pomógł: 4 razy

[C++] drzewa binarne - wypisanie najdłuższej ścieżki

Post autor: siryj »

Mam taki pomysł. Zmień funkcję wysokość tak żeby zapisywała do listy wartości węzłów jeśli należa do najdłuższej ścieżki, a potem poprostu wyświetl tą listę. Myślę że funkcję wysokość trzeba zmienić tak, żeby zwracała strukturę która zawiera długość listy i wskażnik na listę
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[C++] drzewa binarne - wypisanie najdłuższej ścieżki

Post autor: royas »

Jeśli węzeł drzewa ma wskazanie na rodzica, to możesz zmodyfikować wysokość tak aby oprócz wysokości zwracał również wskazanie na których z najgłębiej położonych węzłów. Po wykonaniu dla całego drzewa wypisujesz po prostu ścieżkę od tego węzła do korzenia.
ODPOWIEDZ