#include #include #define N 100 typedef struct cvor{ int br; struct cvor *l; struct cvor *d; } CVOR; CVOR* napravi(int br); void ubaci_u_drvo(CVOR **koren, int br); void ispisi(CVOR *koren); void obrisi(CVOR **koren); CVOR* pronadji(CVOR *koren,int br); int suma(CVOR *koren); int dubina(CVOR *koren); int main(){ int i; CVOR *koren=NULL; CVOR *pronadjen=NULL; int br; for(i=0; i<10; i++){ br=(int)(rand()*1.0/RAND_MAX*N); ubaci_u_drvo(&koren,br); printf("Dodajem cvor %d\n",br); } ubaci_u_drvo(&koren,1); pronadjen=pronadji(koren,1); if(pronadjen==NULL) printf("nema"); else printf("%d",pronadjen->br); printf("\n"); ispisi(koren); printf("Dubina drveta je: %d\n",dubina(koren)); printf("Suma drveta je: %d\n",suma(koren)); obrisi(&koren); ispisi(koren); } CVOR* napravi(int br){ CVOR* novi=(CVOR*)malloc(sizeof(CVOR)); if(novi==NULL) exit(EXIT_FAILURE); novi->br=br; novi->l=NULL; novi->d=NULL; return novi; } void ubaci_u_drvo(CVOR **koren, int br){ CVOR *pom; CVOR *novi; if(*koren==NULL){ *koren=napravi(br); }else{ pom=*koren; novi=napravi(br); while(1){ if(br>pom->br){ if(pom->d==NULL){ pom->d=novi; return; }else pom=pom->d; }else{ if(pom->l==NULL){ pom->l=novi; return; }else pom=pom->l; } } } } void ispisi(CVOR *koren){ if(koren==NULL){ printf("\n"); return; } ispisi(koren->l); printf("%d\t",koren->br); ispisi(koren->d); } void obrisi(CVOR **koren){ if(*koren==NULL) return; obrisi(&(*koren)->l); obrisi(&(*koren)->d); free(*koren); *koren=NULL; } CVOR* pronadji(CVOR *koren, int br){ if(koren!=NULL) { if(koren->br==br) return koren; else if(koren->brd,br); else return pronadji(koren->l,br); } return NULL; } int dubina(CVOR* koren){ int dl; int dd; if(koren==NULL) return 0; else{ dl=dubina(koren->l); dd=dubina(koren->d); return dl>dd?dl+1:dd+1; } } int suma(CVOR* koren){ if(koren==NULL) return 0; else return suma(koren->l)+suma(koren->d)+koren->br; }