#include using namespace std; typedef struct cvor { int inf; struct cvor *levo; struct cvor *desno; }BCVOR; typedef BCVOR* POKBC; void umetni (POKBC novi,POKBC &koren) { if (koren==NULL) koren=novi; else if (novi->infinf) umetni(novi,koren->levo); else umetni(novi,koren->desno); } void ispis(POKBC tekuci) { if (tekuci!=NULL) { ispis(tekuci->desno); cout<inf<<' '; ispis(tekuci->levo); } } void DrugiNaj(POKBC tekuci,int &maks, int &maks2){ if(tekuci!=NULL){ if(tekuci->inf>maks){ maks2=maks; maks=tekuci->inf; } else if(tekuci->inf>maks2 && tekuci->infinf; DrugiNaj (tekuci->desno,maks,maks2); DrugiNaj (tekuci->levo,maks,maks2); } } void BrDelj3(POKBC tekuci, int &s, int &br){ if (tekuci!=NULL) { if(tekuci->inf % 3 == 0){ s+=tekuci->inf; br++; } BrDelj3(tekuci->desno,s,br); BrDelj3(tekuci->levo,s,br); } } int main() { POKBC novi, koren; int znak,maks=0, maks1=0; koren=NULL; cout<<"Unesi niz znakova binarnog drveta i na kraju 0 "<>znak; while (znak!=0) { novi=new BCVOR; novi->inf=znak; novi-> levo=NULL; novi->desno=NULL; umetni(novi,koren); cin>>znak; } cout<<"Sadrzaj binarnog drveta je "; ispis(koren); cout< using namespace std; typedef struct cvor { int inf; struct cvor *levo; struct cvor *desno; }BCVOR; typedef BCVOR* POKBC; void umetni (POKBC novi,POKBC &koren) { if (koren==NULL) koren=novi; else if (novi->infinf) umetni(novi,koren->levo); else umetni(novi,koren->desno); } void LKD(POKBC tekuci) { if (tekuci!=NULL) { LKD(tekuci->levo); cout<inf<<' '; LKD(tekuci->desno); } } void KLD(POKBC tekuci) { if (tekuci!=NULL) { cout<inf<<' '; KLD(tekuci->levo); KLD(tekuci->desno); } } void DKL(POKBC tekuci) { if (tekuci!=NULL) { DKL(tekuci->desno); cout<inf<<' '; DKL(tekuci->levo); } } int Elementi(POKBC tekuci) { if (tekuci == NULL) return 0; return Elementi(tekuci->levo) +1 +Elementi(tekuci->desno); } int Najveci (POKBC tekuci) { if(tekuci==NULL) return 0; else{ if(tekuci->desno != NULL) Najveci(tekuci->desno); else return tekuci->inf; } } int Najmanji (POKBC tekuci) { if(tekuci==NULL) return 0; else{ if(tekuci->levo != NULL) Najmanji(tekuci->levo); else return tekuci->inf; } } int Nadji(POKBC tekuci, int broj){ if(tekuci == NULL) return 0; if(tekuci->inf == broj) return 1; if(tekuci->inf > broj) return Nadji(tekuci->levo, broj); else return Nadji(tekuci->desno, broj); } int BrojPojave(POKBC tekuci, int broj) { if(tekuci == NULL) return 0; if(tekuci->inf == broj) return 1+BrojPojave(tekuci->levo,broj)+BrojPojave(tekuci->desno,broj); else return 0+BrojPojave(tekuci->levo,broj)+BrojPojave(tekuci->desno,broj); } int main() { POKBC novi, koren; int znak; koren=NULL; cout<<"Unesi niz znakova binarnog drveta i na kraju 0 "<>znak; while (znak!=0) { novi=new BCVOR; novi->inf=znak; novi-> levo=NULL; novi->desno=NULL; umetni(novi,koren); cin>>znak; } cout<<"Sadrzaj binarnog drveta levo-koren-desno je "; LKD(koren); cout< "; int broj; cin>>broj; while(broj){ bool nadjen=Nadji(koren,broj); if(nadjen) { cout<<"U binarnom stablu postoji ovaj broj."< "; cin>> broj; } return 0; } Odrediti broj parnih elemenata u listi Naci razliku broja negativnih i pozitivnih elemenata binarnog drveta Napisati funkciju koja ispisuje koliko puta se pojavljuje najveca cifra #include using namespace std; typedef struct lcvor { int inf; struct lcvor *sled; } LCVOR; typedef LCVOR* POKL; void dodaj(POKL novi, POKL &glava) { if (glava == NULL) glava = novi; else dodaj(novi, glava->sled); } int BrParnih(POKL tekuci) { if (tekuci == NULL) return 0; if (tekuci->inf % 2 == 0) return 1 + BrParnih(tekuci->sled); return BrParnih(tekuci->sled); } typedef struct cvor { int inf; struct cvor *levo; struct cvor *desno; } BCVOR; typedef BCVOR* POKBC; void umetni(POKBC novi, POKBC &koren) { if (koren == NULL) koren = novi; else if (novi->inf < koren->inf) umetni(novi, koren->levo); else umetni(novi, koren->desno); } void BrNegPoz(POKBC tekuci, int &neg, int &poz) { if (tekuci != NULL) { if (tekuci->inf < 0) neg++; else if (tekuci->inf > 0) poz++; BrNegPoz(tekuci->levo, neg, poz); BrNegPoz(tekuci->desno, neg, poz); } } int Najveci(POKBC tekuci) { while (tekuci->desno != NULL) tekuci = tekuci->desno; return tekuci->inf; } int BrojPojave(POKBC tekuci, int broj) { if (tekuci == NULL) return 0; int r = BrojPojave(tekuci->levo, broj) + BrojPojave(tekuci->desno, broj); if (tekuci->inf == broj) r++; return r; } void IspisNajveceg(POKBC koren) { if (koren == NULL) { cout << "Stablo ne postoji." << endl; return; } int maks = Najveci(koren); cout << "Najveci element je " << maks << " i pojavljuje se " << BrojPojave(koren, maks) << " puta." << endl; } int main() { // 1. zadatak: lista POKL glava = NULL, nov; int broj; cout << "Unesi elemente liste i na kraju 0 " << endl; cin >> broj; while (broj != 0) { nov = new LCVOR; nov->inf = broj; nov->sled = NULL; dodaj(nov, glava); cin >> broj; } cout << "Broj parnih elemenata u listi je: " << BrParnih(glava) << endl; cout << endl; // 2. i 3. zadatak: stablo POKBC novi, koren = NULL; cout << "Unesi elemente binarnog drveta i na kraju 0 " << endl; cin >> broj; while (broj != 0) { novi = new BCVOR; novi->inf = broj; novi->levo = NULL; novi->desno = NULL; umetni(novi, koren); cin >> broj; } int neg = 0, poz = 0; BrNegPoz(koren, neg, poz); cout << "Negativnih: " << neg << ", pozitivnih: " << poz << endl; cout << "Razlika (negativni - pozitivni) je: " << neg - poz << endl; IspisNajveceg(koren); return 0; } Odrediti broj neparnih elemenata u listi Naci razliku min. i max. elementa u binarnom drvetu Funkcija koja sabira sve pozitivne elemente stabla #include using namespace std; typedef struct lcvor { int inf; struct lcvor *sled; } LCVOR; typedef LCVOR* POKL; void dodaj(POKL novi, POKL &glava) { if (glava == NULL) glava = novi; else dodaj(novi, glava->sled); } int BrNeparnih(POKL tekuci) { if (tekuci == NULL) return 0; if (tekuci->inf % 2 != 0) return 1 + BrNeparnih(tekuci->sled); return BrNeparnih(tekuci->sled); } typedef struct cvor { int inf; struct cvor *levo; struct cvor *desno; } BCVOR; typedef BCVOR* POKBC; void umetni(POKBC novi, POKBC &koren) { if (koren == NULL) koren = novi; else if (novi->inf < koren->inf) umetni(novi, koren->levo); else umetni(novi, koren->desno); } int Najveci(POKBC tekuci) { while (tekuci->desno != NULL) tekuci = tekuci->desno; return tekuci->inf; } int Najmanji(POKBC tekuci) { while (tekuci->levo != NULL) tekuci = tekuci->levo; return tekuci->inf; } int SumaPozitivnih(POKBC tekuci) { if (tekuci == NULL) return 0; int r = SumaPozitivnih(tekuci->levo) + SumaPozitivnih(tekuci->desno); if (tekuci->inf > 0) r += tekuci->inf; return r; } int main() { // 1. zadatak: lista POKL glava = NULL, nov; int broj; cout << "Unesi elemente liste i na kraju 0 " << endl; cin >> broj; while (broj != 0) { nov = new LCVOR; nov->inf = broj; nov->sled = NULL; dodaj(nov, glava); cin >> broj; } cout << "Broj neparnih elemenata u listi je: " << BrNeparnih(glava) << endl; cout << endl; // 2. i 3. zadatak: stablo POKBC novi, koren = NULL; cout << "Unesi elemente binarnog drveta i na kraju 0 " << endl; cin >> broj; while (broj != 0) { novi = new BCVOR; novi->inf = broj; novi->levo = NULL; novi->desno = NULL; umetni(novi, koren); cin >> broj; } if (koren == NULL) cout << "Stablo ne postoji." << endl; else { int mn = Najmanji(koren), mx = Najveci(koren); cout << "Najmanji: " << mn << ", najveci: " << mx << endl; cout << "Razlika (min - max) je: " << mn - mx << endl; cout << "Suma pozitivnih elemenata je: " << SumaPozitivnih(koren) << endl; } return 0; }