Advertisement
Adytzu04

AnexaB-SDA

May 31st, 2013
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.53 KB | None | 0 0
  1. #include "AnexaB.h"
  2.  
  3. char car;
  4. void eroare()
  5. {
  6.     printf("Sirul de intrare este eronat!\n");
  7.     printf("Apasati tasta o tasta...");
  8.     getch();
  9.     exit(1);
  10. }
  11. char readchar()
  12. {
  13.     char c;
  14.     do c=getchar(); while(c==' ');
  15.     return c;
  16. }
  17. char citesteNume()
  18. {
  19.     char c;
  20.     if(!isalpha(car)) eroare();
  21.     c = car;
  22.     car = readchar();
  23.     return c;
  24. }
  25. Nod* citesteArboreB()
  26. {
  27.     Nod* rad;
  28.     if( car=='-' ) {
  29.         rad=0;
  30.         car = readchar();
  31.     }
  32.     else {
  33.         rad = (Nod*) malloc(sizeof(Nod));
  34.         rad->data = citesteNume();
  35.         if( car!='(' ) {
  36.             rad->stg = 0;
  37.             rad->drt = 0;
  38.         }
  39.         else {
  40.             car = readchar();
  41.             rad->stg = citesteArboreB();
  42.             if( car!=',' ) rad->drt = 0;
  43.             else {
  44.                 car = readchar();
  45.                 rad->drt = citesteArboreB();
  46.             }
  47.             if( car!=')' ) eroare();
  48.             car = readchar();
  49.         }
  50.     }
  51.     return rad;
  52. }
  53. Nod* creareArboreB()
  54. {
  55.     printf("\nIntroduceti arborele:");
  56.     car = readchar();
  57.     return citesteArboreB();
  58. }
  59. void elib(PNod &p) //<------------------------------------------------------------
  60. {
  61.     if(p)
  62.     {
  63.         elib(p->stg);
  64.         elib(p->drt);
  65.         delete p;
  66.         p=0;
  67.     }
  68. }
  69.  
  70. void postOrdine(PNod p) //<------------------------------------------------------------
  71. {
  72.     if(p)
  73.     {
  74.         postOrdine(p->stg);
  75.         postOrdine(p->drt);
  76.         cout<<p->data;
  77.     }
  78. }
  79.  
  80. int adancime(PNod p) //<-------------------------------------------------------------
  81. {
  82.     if(!p)
  83.         return 0;
  84.     else
  85.         return 1+max(adancime(p->stg),adancime(p->drt));
  86. }
  87.  
  88. int max(int a, int b) //<------------------------------------------------------
  89. {
  90.     return(a>b)?a:b;
  91. }
  92.  
  93. int nrN(PNod p) //<------------------------------------------------
  94. {
  95.     if(!p)
  96.         return 0;
  97.     else
  98.         return 1+nrN(p->stg)+nrN(p->drt);
  99. }
  100.        
  101. int nrFrunze(PNod p)  //<----------------------------------------------
  102. {
  103.     if(!p)
  104.         return 0;
  105.     else
  106.         if(p->stg || p->drt)
  107.             return nrFrunze(p->stg)+nrFrunze(p->drt);
  108.         else
  109.             return 1;
  110. }
  111.  
  112. void afis(PNod p, Atom &vMax) //<---------------------------------------------
  113. {
  114.     if(!p)
  115.         return 'A'-1;
  116.     else
  117.     {
  118.         Atom vs,vd;
  119.         vs=vd='A'-1;
  120.         afis(p->stg,vs);
  121.         afis(p->drt,vd);
  122.         vs=(vs>vd)?vs:vd;
  123.         if(p->data>vs)
  124.             cout<<p->data;
  125.         vMax=(p->data>vs)?p->data:vs;
  126.     }
  127. }
  128.  
  129. void inv(PNod &p)  //<--------------------------------------------
  130. {
  131.     if(p)
  132.     {
  133.         PNod aux=p->stg;
  134.         p->stg=p->drt;
  135.         p->drt=aux;
  136.         inv(p->stg);
  137.         inv(p->drt);
  138.     }
  139. }
  140.  
  141. void afisP(PNod p)
  142. {
  143.     if(!p)
  144.         cout<<'-';
  145.     else
  146.     {
  147.         cout<<p->data;
  148.         if(p->stg || p->drt)
  149.         {
  150.             cout<<'(';
  151.             afisP(p->stg);
  152.             if(p->drt)
  153.             {
  154.                 cout<<',';
  155.                 afisP(p->drt);
  156.             }
  157.         }
  158.     }
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement