Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.11 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #include <stdlib.h>
  4.  
  5. #include <sys/time.h>
  6.  
  7. //definicja wezla
  8. struct wezel {
  9.   int wartosc; //wartosc przechowywana w wezle
  10.   struct wezel * rodzic; //wskaznik na rodzica
  11.   struct wezel * l_syn; //wskaznik na lewe dziecko
  12.   struct wezel * p_syn; //wskaznik na prawe dziecko
  13. };
  14.  
  15. struct wezel * root;
  16.  
  17. void dodawanie(int n, struct wezel * start) {
  18.   //jezeli drzewo jest puste to dodaj korzen
  19.   if (root == NULL) {
  20.     root = (wezel * ) malloc(sizeof * root);
  21.     root - > wartosc = n;
  22.     root - > l_syn = NULL;
  23.     root - > p_syn = NULL;
  24.     root - > rodzic = NULL;
  25.   }
  26.   //jezeli zadana wartosc jest mniejsza od korzenia idz do lewego poddrzewa
  27.   else if (n < start - > wartosc) {
  28.     //jezeli lewe poddrzewo istnieje wywolaj dla niego ta funkcje rekurencyjnie
  29.     if (start - > l_syn != NULL) {
  30.       dodawanie(n, start - > l_syn);
  31.     }
  32.     //jezeli lewe poddrzewo nie istnieje dodaj nowy wezel o zadanej wartosci
  33.     else {
  34.       wezel * nowy = (wezel * ) malloc(sizeof * root);
  35.       nowy - > wartosc = n;
  36.       nowy - > l_syn = NULL;
  37.       nowy - > p_syn = NULL;
  38.       nowy - > rodzic = start;
  39.       start - > l_syn = nowy;
  40.     }
  41.   }
  42.   //jezeli zadana wartosc jest wieksza lub rowna korzeniowi idz do prawego poddrzewa  
  43.   else {
  44.     //jezeli prawe poddrzewo istnieje wywolaj dla niego ta funkcje rekurencyjnie      
  45.     if (start - > p_syn != NULL) {
  46.       dodawanie(n, start - > p_syn);
  47.     }
  48.     //jezeli prawe poddrzewo nie istnieje dodaj nowy wezel o zadanej wartosci    
  49.     else {
  50.       wezel * nowy = (wezel * ) malloc(sizeof * root);
  51.       nowy - > wartosc = n;
  52.       nowy - > l_syn = NULL;
  53.       nowy - > p_syn = NULL;
  54.       nowy - > rodzic = start;
  55.       start - > p_syn = nowy;
  56.     }
  57.   }
  58. }
  59.  
  60. int maksimum(struct wezel * start) {
  61.   if (start - > l_syn != NULL)
  62.     return naj_lewo(start - > l_syn);
  63.   else
  64.     return start.wartosc;
  65. }
  66.  
  67. int main() {
  68.   dodawanie(5, root);
  69.   dodawanie(1, root);
  70.   dodawanie(2, root);
  71.   dodawanie(4, root);
  72.   dodawanie(3, root);
  73.   dodawanie(7, root);
  74.   dodawanie(6, root);
  75.   dodawanie(8, root);
  76.   dodawanie(9, root);
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement