Advertisement
KillerBananaZ

Exercitii la arbori binari de cautare

May 15th, 2017
343
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.14 KB | None | 0 0
  1.     Exercitii la arbori binari de cautare
  2.  
  3. Pagina 322
  4.  
  5. 5) #include <iostream>
  6. #include <fstream>
  7. using namespace std;
  8. ifstream f("fractii.in");
  9. struct nod {
  10.            int x,y;
  11.            nod *st,*dr;
  12.            };
  13. nod *rad;
  14. void creare(nod*&p)
  15. {
  16.     int x,y;
  17.     f >> x >> y;
  18.     if(x==0&&y==0)
  19.         p=NULL;
  20.     else
  21.     {
  22.         p = new nod;
  23.         p->x=x;
  24.         p->y=y;
  25.        // cout << p->x << " " << p->y <<endl;
  26.         creare(p->st);
  27.         creare(p->dr);
  28.     }
  29. }
  30. int cmmdc(int a, int b)
  31. {
  32.     int t;
  33.     while (b != 0)
  34.     {
  35.         t=b;
  36.         b=a%b;
  37.         a=t;
  38.     }
  39.     return a;
  40. }
  41. void simplificare(nod*p)
  42. {
  43.     if(p!=NULL)
  44.     {
  45.         int aux=cmmdc(p->x,p->y);
  46.         p->x/=aux;
  47.         p->y/=aux;
  48.         simplificare(p->st);
  49.         simplificare(p->dr);
  50.     }
  51. }
  52. void SRD(nod*p)
  53. {
  54.     if(p!=NULL)
  55.     {
  56.         SRD(p->st);
  57.         cout << p->x << "/" << p->y<<endl;
  58.         SRD(p->dr);
  59.     }
  60. }
  61. int main()
  62. {
  63.     rad=NULL;
  64.     creare(rad);
  65.     cout << "Arbore inainte de simplificare: "<<endl;
  66.     SRD(rad);
  67.     cout << "Arbore dupa simplificare: "<<endl;
  68.     simplificare(rad);
  69.     SRD(rad);
  70. }
  71.  
  72.  
  73. 6) #include <iostream>
  74. #include <fstream>
  75. using namespace std;
  76. ifstream f("arbore.in");
  77. struct nod {
  78.            int inf;
  79.            nod *st,*dr;
  80.            };
  81. nod *rad;
  82. int n[100],nr;
  83. void creare(nod*&p)
  84. {
  85.     int x;
  86.     f >> x;
  87.     if(x==0)
  88.         p=NULL;
  89.     else
  90.     {
  91.         p = new nod;
  92.         p->inf=x;
  93.         creare(p->st);
  94.         creare(p->dr);
  95.     }
  96. }
  97. int ok;
  98. void frati(nod*p,int x)
  99. {
  100.     if(p!=NULL && p->st!=NULL && p->dr!=NULL)
  101.     {
  102.         if(p->st->inf==x)
  103.         {
  104.             cout << "Fratele drept este: " << p->dr->inf <<endl;
  105.             ok=1;
  106.         }
  107.         else
  108.             if(p->dr->inf==x)
  109.         {
  110.             cout << "Fratele stang este: " << p->st->inf <<endl;
  111.             ok=1;
  112.         }
  113.                 frati(p->st,x);
  114.         frati(p->dr,x);
  115.     }
  116. }
  117. int main()
  118. {
  119.     int x;
  120.     rad=NULL;
  121.     creare(rad);
  122.     cout << "x= ";
  123.     cin >> x;
  124.     frati(rad,x);
  125.     if(ok==0)
  126.         cout << "nu exista";
  127.  
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement