FONForum
http://678540.1rf3m2gpa.asia/

Binarna stabla - i ta famozna rekurzija
http://678540.1rf3m2gpa.asia/viewtopic.php?f=8&t=1052
Stranica 1 od 1

Autoru:  Black [ 25.05.2003. 03:01:31 ]
Tema posta: 

Funkcija bi trebalo da, kao argumente, prima pokazivac na koren binarnog stabla (b) i pokazivac na neki cvor (pok), a da vraca nulu ukoliko taj cvor ne pripada stablu, odnosno jedinicu ako pripada. Da li bi ovo radilo?
Kod:
int Sadrzi (cv * b, cv * pok) {
if (b==NULL) return 0;
if (b==pok) return 1;
else return Sadrzi (b->levo, pok) + Sadrzi (b->desno, pok);
}


(editovao sam poruku da bih ispravio greske u kodu)

Autoru:  zlatko [ 25.05.2003. 12:02:00 ]
Tema posta: 

Najbolje je da sam proveri

Autoru:  Black [ 04.06.2003. 01:22:41 ]
Tema posta: 

Primetio sam da je prilikom resavanja problema sa binarnim stablima ponekad potrebno porediti neke podatke koji se odnose na svaki cvor pojedinacno sa nekom referentnom vrednoscu (na primer neki minimum ili maksimum). Cini mi se da bi u tom slucaju bilo zgodno koristi static promenljive, pa me zanima da li sam u pravu i da li je to dozvoljeno na ispitu?

Drugo pitanje se odnosi na jedan zadatak sa kolokvijuma.
Tekst zadatka glasi: Dat je pokazivac na koren binarnog stabla. Napisati funkciju koja ce vratiti pokazivac na cvor u stablu kod koga je najveca apsolutna razlika izmedju visina njegovog levog i desnog podstabla.

Ovako nesto mi je palo na pamet, ali nisam siguran ni za logiku, ni za sintaksu. U stvari, pokusao sam da simuliram upotrebu static promenljivih.
Kod:
void Vrati (cv* b, cv** pok, int* m) {
 int a;
 if (b==NULL) return;
 a= (abs(Visina(b->levo)-Visina(b->desno));
 if (a>m) {
  *m=a;
  *pok=b;
   }
 Vrati (b->levo, &(*pok), &(*m));
 Vrati (b->desno, &(*pok), &(*m));
}


Funkciju bi pozvali ovako
Vrati (koren, &pokazivac, &broj) i kada se funkcija izvrsi promenljiva pokazivac bi trebalo da pokazuje na trazeni cvor.
Inace, ideja je da za svaki cvor izracunamo razliku podstabala i da ih uporedimo sa maksimalnom razlikom, i ako je razlika veca da tu novu vrednostu upisemo u promenljivu broj, a u promenljivu pokazivac da upisemo adresu tog cvora.
Samo, mozda je mali problem to sto na ovaj nacin nije do kraja ispostovan zahtev da bas funkcija vraca pokazivac na trazeni cvor.

Autoru:  zlatko [ 12.06.2003. 01:28:25 ]
Tema posta: 

Nisam mogao ranije da odgovorim jer mi je crkla plo

Autoru:  Black [ 12.06.2003. 02:15:16 ]
Tema posta: 

Ma, nije kasno.
Inace, i ja sam hteo isto da izvedem ali sam preterao sa upotrebom simbola za referenciranje i dereferenciranje :)

Autoru:  zlatko [ 12.06.2003. 08:05:57 ]
Tema posta: 

Pa ti si ta

Stranica 1 od 1 Sva vremena su u UTC + 1 sat
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/