Code:
#include <stdlib.h>
#include <stdio.h>
struct cvor{
int broj;
struct cvor *l, *d;
};
void ubaci_u_drvo(struct cvor **pdrvo, int b){
if (*pdrvo == NULL){
struct cvor *novi;
if ((novi = (cvor*)malloc(sizeof(cvor))) == NULL){
fprintf(stderr, "Greska prilikom alokacije memorije");exit(1);}
novi->broj = b;
novi->l = NULL;
novi->d = NULL;
*pdrvo = novi;}
else{
if (b < (*pdrvo)->broj)
ubaci_u_drvo(&((*pdrvo)->l), b);
else
ubaci_u_drvo(&((*pdrvo)->d), b);
}
}
int pronadji(struct cvor *drvo){
int vrati, l, d,;
if (drvo != NULL){
l = pronadji(drvo->l);
d = pronadji(drvo->d);
if (l < d ){
if(l < drvo->broj)
vrati=l;
else
vrati=drvo->broj;
}
else{
if(d < drvo->broj)
vrati=d;
else
vrati=drvo->broj;
}
}
return vrati;
}
void ispisi_drvo(struct cvor *drvo){
if (drvo != NULL){
ispisi_drvo(drvo->l);
printf("%d ", drvo->broj);
ispisi_drvo(drvo->d);
}
}
void obrisi_drvo(struct cvor *drvo){
if (drvo != NULL){
obrisi_drvo(drvo->l);
obrisi_drvo(drvo->d);
free(drvo);
}
}
int main(){
struct cvor *drvo = NULL;
int i;
int max=1,min=0;
while(1){
printf("ubacujte brojeve u drvo za izlaz unesite 0: ");
scanf("%d",&i);
if(i==0) break;
ubaci_u_drvo(&drvo,i);}
ispisi_drvo(drvo);
putchar('\n');
printf("najmanji cvor u drvetu je: %d\n",pronadji(drvo));
obrisi_drvo(drvo);
}
#include <stdlib.h>
#include <stdio.h>
struct cvor{
int broj;
struct cvor *l, *d;
};
void ubaci_u_drvo(struct cvor **pdrvo, int b){
if (*pdrvo == NULL){
struct cvor *novi;
if ((novi = (cvor*)malloc(sizeof(cvor))) == NULL){
fprintf(stderr, "Greska prilikom alokacije memorije");exit(1);}
novi->broj = b;
novi->l = NULL;
novi->d = NULL;
*pdrvo = novi;}
else{
if (b < (*pdrvo)->broj)
ubaci_u_drvo(&((*pdrvo)->l), b);
else
ubaci_u_drvo(&((*pdrvo)->d), b);
}
}
int pronadji(struct cvor *drvo){
int vrati, l, d,;
if (drvo != NULL){
l = pronadji(drvo->l);
d = pronadji(drvo->d);
if (l < d ){
if(l < drvo->broj)
vrati=l;
else
vrati=drvo->broj;
}
else{
if(d < drvo->broj)
vrati=d;
else
vrati=drvo->broj;
}
}
return vrati;
}
void ispisi_drvo(struct cvor *drvo){
if (drvo != NULL){
ispisi_drvo(drvo->l);
printf("%d ", drvo->broj);
ispisi_drvo(drvo->d);
}
}
void obrisi_drvo(struct cvor *drvo){
if (drvo != NULL){
obrisi_drvo(drvo->l);
obrisi_drvo(drvo->d);
free(drvo);
}
}
int main(){
struct cvor *drvo = NULL;
int i;
int max=1,min=0;
while(1){
printf("ubacujte brojeve u drvo za izlaz unesite 0: ");
scanf("%d",&i);
if(i==0) break;
ubaci_u_drvo(&drvo,i);}
ispisi_drvo(drvo);
putchar('\n');
printf("najmanji cvor u drvetu je: %d\n",pronadji(drvo));
obrisi_drvo(drvo);
}
Znaci ovako napisana funkcija radi ali nema dobru povratnu vrednost u slucaju da je drvo prazno, a kad ubacim jedan "else return 0;" uvek mi vraca 0. Probao sam i da pocnem funkciju sa if(drvo==NULL) return 0; pa else ovo sve ostalo i opet ista stvar. Ovo se inace ne desava za funkciju koja trazi maksimum koja je skoro identicnog koda samo su joj vrednosti u ovim if-ovima zamenjene.
Ako neko ima ideju bio bih mu zahvalan
Milos