Advertisement
Guest User

Untitled

a guest
Aug 19th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.71 KB | None | 0 0
  1. /* Ten program tworzy i wyœwietla drzewo typu BST */
  2.  
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5.  
  6.  
  7. #define TRUE 1
  8. #define FALSE 0
  9.  
  10. typedef int BOOLEAN;
  11. typedef char ETYPE;
  12.  
  13. typedef struct NODE *TREE;
  14. struct NODE {
  15.     ETYPE element;
  16.     TREE left, right;
  17. } *root;
  18.  
  19. /* funkcja print_tree(T,l) drukuje drzewo T poczynaj¹c od korzenia */
  20. void print_tree(TREE T, int l);
  21.  
  22. /* funkcja insert (x, T) dodaje wartosc x do drzewa T */
  23. TREE insert(ETYPE x, TREE T);
  24.  
  25. int height(TREE T, int n); /* nalezy wywolac z drugim argumentem 0 */
  26.  
  27.  
  28. int main(void)
  29. {
  30.   char s[80];
  31.   root = NULL;  /* inicjacja korzenia */
  32.   do {
  33.     printf("Wpisz litere i nacisnij Enter (sam Enter konczy tworzenie drzewa): ");
  34.     gets(s);
  35.     root = insert(*s, root);
  36.   } while(*s);
  37.   printf("\n\nWyswietlanie drzewa z lewa na prawo (zamiast z gory w dol)");
  38.   printf("\n\n");
  39.   print_tree(root, 0);
  40.   printf("\n\n");
  41.   printf("Nacisnij Enter aby zakonczyc program");
  42.   gets(s);
  43.   return 0;
  44. }
  45.  
  46. TREE insert(ETYPE x, TREE T)
  47. {
  48.     if (T == NULL) {
  49.         T = (TREE) malloc(sizeof(struct NODE));
  50.         T->element = x;
  51.         T->left = NULL;
  52.         T->right = NULL;
  53.     }
  54.     else if (x < T->element)
  55.         T->left = insert(x, T->left);
  56.     else if (x > T->element)
  57.         T->right = insert(x, T->right);
  58.     return T;
  59. }
  60.  
  61.  
  62. void print_tree(TREE T, int l)
  63. {
  64.   int i;
  65.   if(!T) return;
  66.   print_tree(T->right, l+1);
  67.   for(i=0; i<l; ++i) printf("   ");
  68.   printf("%c\n", T->element);
  69.   print_tree(T->left, l+1);
  70. }
  71.  
  72. int height(TREE T, int n) /* nalezy wywolac z drugim argumentem 0 */
  73. {
  74.     int tmp, max=n;
  75.     if(T->left!=NULL)
  76.     {
  77.         tmp=height(T->left,n+1);
  78.         if(tmp>max) max=tmp;
  79.     }
  80.     if(T->right!=NULL)
  81.     {
  82.         tmp=height(T->right,n+1);
  83.         if(tmp>max) max=tmp;
  84.     }
  85.     return max;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement