Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- //struktury zwierzaka:
- #define nmax 100
- typedef struct REF {
- int a;
- REF* next;
- } ref;
- typedef struct REF2 {
- int b;
- REF2 *left, *right;
- } ref2;
- typedef ref t3[nmax];
- /* ------------- tu sa zadania ------------ */
- int fp0_1(int n, t3 B) {
- int dlugosc = 0;
- ref* wskaznik;
- for(int i = 0; i < n; i++) {
- wskaznik = &B[i];
- while(wskaznik) {
- dlugosc += 1;
- wskaznik = wskaznik->next;
- }
- }
- return dlugosc;
- }
- void pp0_2(int x, ref* h) {
- ref* wskaznik = h;
- while(wskaznik) {
- wskaznik->a = x;
- wskaznik = wskaznik->next;
- }
- }
- int fp0_3(int level, ref2* t) {
- if(t == 0) return 0;
- if(level == 0) return t->b;
- int suma = 0;
- suma += fp0_3(level-1,t->left);
- suma += fp0_3(level-1,t->right);
- return suma;
- }
- //przyjmujemy, ze w BST te mniejsze elementy sa po prawej
- int pp0_4(ref2* t) {
- ref2* wskaznik = t;
- while(wskaznik->right) {
- wskaznik = wskaznik->right;
- }
- return wskaznik->b;
- }
- int fp0_5(ref2* t) {
- if(!t->left && !t->right) return 1;
- int a = 0,b = 0;
- if(t->left) a = fp0_5(t->left);
- if(t->right) b = fp0_5(t->right);
- if(a>=b)
- return a+1;
- else
- return b+1;
- }
- /* ------------ koneic zadan ----------- */
- //alokuje nowe ref2 zeby budowac altwo drzewa
- ref2* nref2(int x, ref2* r, ref2* l) {
- ref2* tmp = (ref2*)malloc(sizeof(ref2));
- tmp->b = x;
- tmp->right = r;
- tmp->left = l;
- return tmp;
- }
- //testy f-cji fp0_3, fp0_4, fp0_5 :
- int main() {
- //testowe drzewko
- /*
- 5
- 3 7
- 2 4 6 .
- */
- ref2* test = nref2(5,
- nref2(3,
- nref2(2,0,0),
- nref2(4,0,0)
- ),
- nref2(7,
- nref2(6,0,0),
- 0
- )
- );
- printf("fp0_5: %d == 3 ?\n", fp0_5(test));
- printf("pp0_4: %d == 2 ?\n", pp0_4(test));
- printf("fp0_3: %d == 12 ?\n", fp0_3(2,test));
- return 0;
- }
Add Comment
Please, Sign In to add comment