1) Napisati program koji implementira podsetnik za rodjendane. U fajlu se nalazi
   niz linija oblika:
   Ime Prezime DD. MM. YYYY.
   tj. za svaku osobu je naveden datum rodjenja. Kada se program pokrene, 
   korisnik treba da unese datum, a program treba da pronadje osobu ciji je 
   rodjendan najblizi zadatom datumu. Ovaj postupak treba ponavljati dokle 
   god korisnik ne unese komandu za kraj rada. Informacije o rodjendanima 
   uneti u mapu koja je implementirana preko binarnog stabla pretrage.
2) Neka je dat tekstualni fajl i u njemu neki tekst (niz recenica, pri cemu
   se svaka recenica zavrsava tackom). Napisati program koji sortira recenice 
   po duzini u rastucem poretku i upisuje ih tako sortirane u novi tekstualni 
   fajl, u svakoj liniji po jednu recenicu. Sortiranje izvrsiti primenom 
   binarnih stabala. 
3) Napisati program koji odredjuje koja se kljucna rec pojavljuje najveci
   broj puta u datom C programu. Brojanje kljucnih reci implementirati pomocu
   binarnog stabla. 
4) Napisati funkciju koja za dato binarno stablo pretrage i za datu vrednost 
   x koja je u stablu odredjuje sledbenik cvora x (vrednost y koja je prva 
   veca vrednost u stablu od vrednosti x). Funkcija treba da vrati adresu 
   cvora koji sadrzi vrednost y. Napisati potom i program koji testira ovu 
   funkciju.
5) Napisati funkciju koja za dato binarno stablo pretrage i za datu vrednost 
   x koja je u stablu odredjuje prethodnik cvora x (vrednost y koja je prva 
   manja vrednost u stablu od vrednosti x). Funkcija treba da vrati adresu 
   cvora koji sadrzi vrednost y. Napisati potom i program koji testira ovu 
   funkciju.
6) Napisati funkciju koja racuna sumu svih vrednosti y u binarnom stablu 
   pretrage koje su manje ili jednake od date vrednosti x. Napisati potom i 
   program koji testira ovu funkciju.
7) Napisati funkciju koja racuna sumu svih vrednosti y u binarnom stablu 
   pretrage koje su vece ili jednake od date vrednosti x. Napisati potom i 
   program koji testira ovu funkciju.
8) Napisati funkciju koja za dato binarno stablo odredjuje tzv. koeficiente 
   ravnoteze svih cvorova. Koeficient ravnoteze cvora v je razlika visina 
   njegovog levog i desnog podstabla (pod visinom stabla podrazumevamo 
   rastojanje od korena do najudaljenijeg lista). Napisati potom i program 
   koji testira ovu funkciju.
9) AVL stablo je binarno stablo pretrage koje ima osobinu da je za svaki 
   njegov cvor koeficient ravnoteze jednak -1, 0 ili 1. Napisati funkciju 
   koja za dato binarno stablo pretrage proverava da li je AVL. Napisati 
   potom i program koji testira ovu funkciju.
10) U binarnom stablu pretrage za cvor kazemo da je C-AVL ako su oba njegova 
   podstabla jednake visine (tj. ako mu je faktor ravnoteze 0) Napisati 
   funkciju koja obelezava sve C-AVL cvorove ciji ni jedan potomak nije C-AVL 
   cvor. Napisati potom i program koji testira ovu funkciju.
11) Za binarno stablo pretrage kazemo da je L-AVL ako svaki njegov cvor ima 
   koeficient ravnoteze jednak 1. Napisati funkciju koja za dato binarno 
   stablo pretrage proverava da li je L-AVL. Napisati potom i program koji 
   testira ovu funkciju.
12) Za binarno stablo pretrage kazemo da je R-AVL ako svaki njegov cvor ima 
   koeficient ravnoteze jednak -1. Napisati funkciju koja za dato binarno 
   stablo pretrage proverava da li je R-AVL. Napisati potom i program koji 
   testira ovu funkciju.
13) Napisati funkciju koja za dato binarno stablo pretrage odredjuje prosecno 
   vreme pretrage. Ovo vreme se racuna kao suma(h(v)+1)/n, gde je h(v) visina 
   cvora v, suma je po svim cvorovima stabla, a n je broj cvorova u stablu. 
   Napisati potom i program koji testira ovu funkciju. NAPOMENA: Pod visinom 
   cvora h(v) se podrazumeva rastojanje od korena. Dakle, sam koren je na 
   visini 0.
