SHARE
TWEET

Untitled

a guest Dec 14th, 2019 108 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4.  
  5. typedef struct nod
  6. {
  7.     int valoare;
  8.     struct nod *st;
  9.     struct nod *dr;
  10. }nod;
  11.  
  12. nod *rad1=NULL;
  13. nod *rad2=NULL;
  14.  
  15. nod* adaugare1(nod *t, int v)
  16. {
  17.     if(t==NULL){
  18.         t=(nod*)malloc(sizeof(nod));
  19.         t->valoare=v;
  20.         t->st=NULL;
  21.         t->dr=NULL;
  22.     }
  23.     else
  24.         if(t->valoare>v)
  25.             t->st=adaugare1(t->st,v);
  26.         else
  27.             if(t->valoare<v)
  28.                 t->dr=adaugare1(t->dr,v);
  29.             else
  30.                 printf("Elementul deja exista in arbore.\n");
  31.     return t;
  32. }
  33. nod* adaugare2(nod *t, int v)
  34. {
  35.     if(t==NULL){
  36.         t=(nod*)malloc(sizeof(nod));
  37.         t->valoare=v;
  38.         t->st=NULL;
  39.         t->dr=NULL;
  40.     }
  41.     else
  42.         if(t->valoare>v)
  43.             t->st=adaugare2(t->st,v);
  44.         else
  45.             if(t->valoare<v)
  46.                 t->dr=adaugare2(t->dr,v);
  47.             else
  48.                 printf("Elementul deja exista in arbore.\n");
  49.     return t;
  50. }
  51.  
  52. void citire1()
  53. {
  54.     FILE *f;
  55.     int v;
  56.     f=fopen("in.txt","rt");
  57.     if(f==NULL)
  58.         printf("fisierul nu poate fi deschis\n");
  59.     else{
  60.         while(!feof(f)){
  61.             fscanf(f,"%d",&v);
  62.             rad1=adaugare1(rad1,v);
  63.         }
  64.         fclose(f);
  65.     }
  66. }
  67.  
  68. void citire2()
  69. {
  70.     FILE *f;
  71.     int v;
  72.     f=fopen("in2.txt","rt");
  73.     if(f==NULL)
  74.         printf("fisierul nu poate fi deschis\n");
  75.     else{
  76.         while(!feof(f)){
  77.             fscanf(f,"%d",&v);
  78.             rad2=adaugare2(rad2,v);
  79.         }
  80.         fclose(f);
  81.     }
  82. }
  83.  
  84. void afisare1(nod *t)
  85. {
  86.     if(t != NULL){
  87.         afisare1(t->st);
  88.         printf(" %d", t->valoare);
  89.         afisare1(t->dr);
  90.     }
  91. }
  92.  
  93. void afisare2(nod *t)
  94. {
  95.     if(t != NULL){
  96.         afisare2(t->st);
  97.         printf(" %d", t->valoare);
  98.         afisare2(t->dr);
  99.     }
  100. }
  101.  
  102. nod *elim1(nod *t, nod *p)
  103. {
  104.     nod *q, *q1;
  105.     q = t;
  106.     if(q->dr != NULL)
  107.     {
  108.         q->dr = elim1(q->dr, p);
  109.     }
  110.     else
  111.     {
  112.         q1 = q;
  113.         p->valoare = q->valoare;
  114.         q = q->st;
  115.     }
  116.     return q;
  117. }
  118.  
  119. nod *elim2(nod *t, nod *p)
  120. {
  121.     nod *q, *q1;
  122.     q = t;
  123.     if(q->dr != NULL)
  124.     {
  125.         q->dr = elim2(q->dr, p);
  126.     }
  127.     else
  128.     {
  129.         q1 = q;
  130.         p->valoare = q->valoare;
  131.         q = q->st;
  132.     }
  133.     return q;
  134. }
  135.  
  136. nod *sterge1(nod *t, int valoare)
  137. {
  138.     nod *q, *q1;
  139.     if(t == NULL)
  140.         printf("Nodul nu exista!");
  141.     else
  142.         if(t->valoare > valoare)
  143.             t->st = sterge1(t->st, valoare);
  144.         else{
  145.             if(t->valoare < valoare)
  146.                 t->dr = sterge1(t->dr, valoare);
  147.             else{
  148.                 if(t->st == NULL)
  149.                 {
  150.                     q1 = t;
  151.                     q = t->dr;
  152.                     free(q1);
  153.                     return q;
  154.                 }
  155.                 else
  156.                     if(t->dr == NULL)
  157.                     {
  158.                         q1 = t;
  159.                         q = t->st;
  160.                         free(q1);
  161.                         return q;
  162.                     }
  163.                     else
  164.                         t->st = elim1(t->st, t);
  165.                 }
  166.             }
  167.     return t;                  
  168. }
  169.  
  170. nod *sterge2(nod *t, int valoare)
  171. {
  172.     nod *q, *q1;
  173.     if(t == NULL)
  174.         printf("Nodul nu exista!");
  175.     else
  176.         if(t->valoare > valoare)
  177.             t->st = sterge2(t->st, valoare);
  178.         else{
  179.             if(t->valoare < valoare)
  180.                 t->dr = sterge2(t->dr, valoare);
  181.             else{
  182.                 if(t->st == NULL)
  183.                 {
  184.                     q1 = t;
  185.                     q = t->dr;
  186.                     free(q1);
  187.                     return q;
  188.                 }
  189.                 else
  190.                     if(t->dr == NULL)
  191.                     {
  192.                         q1 = t;
  193.                         q = t->st;
  194.                         free(q1);
  195.                         return q;
  196.                     }
  197.                     else
  198.                         t->st = elim2(t->st, t);
  199.                 }
  200.             }
  201.     return t;                  
  202. }
  203. int main(){
  204.     citire1();
  205.     citire2();
  206.     printf("Arborii completi sunt: \n");
  207.     afisare1(rad1);
  208.     printf("\n");
  209.     afisare2(rad2);
  210.     sterge2(rad2,5);
  211.     sterge1(rad1,4);
  212.     printf("\nArborii dupa eliminarea elementelor dorite sunt: \n");
  213.     afisare1(rad1);
  214.     printf("\n");
  215.     afisare2(rad2);
  216.     getch();
  217.     return 0;
  218. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top