Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <conio.h>
- #include <malloc.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- struct ElementDrzewa
- {
- double Liczba;
- ElementDrzewa *Lewo, *Prawo;
- };
- ElementDrzewa * NowyElementDrzewa(double x)
- {
- ElementDrzewa * Nowy = (struct ElementDrzewa*) malloc(sizeof(struct ElementDrzewa));
- Nowy->Liczba = x;
- Nowy->Lewo = Nowy->Prawo = 0;
- return Nowy;
- }
- void ZwolnijDrzewo(struct ElementDrzewa * Korzen)
- {
- if(Korzen->Lewo)
- {
- if(Korzen->Lewo->Lewo==0 && Korzen->Lewo->Prawo==0)
- {
- ZwolnijDrzewo(Korzen->Lewo);
- }
- else
- {
- delete Korzen->Lewo;
- };
- }
- if(Korzen->Prawo)
- {
- if(Korzen->Prawo->Lewo==0 && Korzen->Prawo->Prawo==0)
- {
- ZwolnijDrzewo(Korzen->Prawo);
- }
- else
- {
- delete Korzen->Prawo;
- };
- }
- if(Korzen->Lewo==0 && Korzen->Prawo==0) delete Korzen;
- }
- void WstawElementDrzewa(struct ElementDrzewa *Korzen, double Liczba)
- {
- if(Liczba < Korzen->Liczba)
- {
- if(Korzen->Lewo)
- {
- WstawElementDrzewa(Korzen->Lewo, Liczba);
- }
- else
- {
- Korzen->Lewo = NowyElementDrzewa(Liczba);
- }
- }
- if(Liczba > Korzen->Liczba)
- {
- if(Korzen->Prawo)
- {
- WstawElementDrzewa(Korzen->Prawo, Liczba);
- }
- else
- {
- Korzen->Prawo = NowyElementDrzewa(Liczba);
- }
- }
- }
- ElementDrzewa * WczytajDrzewo(char * NazwaPliku)
- {
- FILE * f;
- double Liczba;
- unsigned int i, Liczbaliczb;
- struct ElementDrzewa *Drzewo =0;
- if((f=fopen(NazwaPliku, "r")) != 0)
- {
- fscanf(f,"%u", &Liczbaliczb);
- fscanf(f,"%lf", &Liczba);
- Drzewo = NowyElementDrzewa(Liczba);
- for(i=1; i<Liczbaliczb; ++i)
- {
- fscanf(f, "%lf", &Liczba);
- WstawElementDrzewa(Drzewo, Liczba);
- }
- fclose(f);
- } else printf("BLAD W TRAKCIE OTWIERANIA PLIKU !");
- return Drzewo;
- }
- unsigned int GlebokoscDrzewa(struct ElementDrzewa * Korzen)
- {
- unsigned int ile1, ile2;
- if( Korzen->Prawo == NULL)
- {
- ile1 = 0;
- }
- else
- {
- ile1 = GlebokoscDrzewa(Korzen->Prawo);
- }
- if(Korzen->Lewo == NULL)
- {
- ile2 = 0;
- }
- else
- {
- ile2 = GlebokoscDrzewa(Korzen->Lewo);
- }
- if(ile1 > ile2){
- return ++ile1;}
- else
- return ++ile2;
- };
- int main()
- {
- srand(time(NULL));
- double tablica[5000];
- for(int i=0; i<2500 ;i++) tablica[i] = rand()%5000;
- for(int i=2500;i<5000;i++) tablica[i] = rand()%5000-5000;
- FILE * plik;
- plik = fopen("06.txt", "w");
- int x=5000;
- fprintf(plik, "%d\n", x);
- for(int i=0; i<5000; i++)
- {
- fprintf(plik, "%lf\n", tablica[i]);
- }
- fclose(plik);
- struct ElementDrzewa * Drzewo;
- Drzewo = WczytajDrzewo("06.txt");
- printf("Najwieksza glebokosc drzewa: %u\n", GlebokoscDrzewa(Drzewo));
- ZwolnijDrzewo(Drzewo);
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement