Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "AnexaB.h"
- char car;
- void eroare()
- {
- printf("Sirul de intrare este eronat!\n");
- printf("Apasati tasta o tasta...");
- getch();
- exit(1);
- }
- char readchar()
- {
- char c;
- do c=getchar(); while(c==' ');
- return c;
- }
- char citesteNume()
- {
- char c;
- if(!isalpha(car)) eroare();
- c = car;
- car = readchar();
- return c;
- }
- Nod* citesteArboreB()
- {
- Nod* rad;
- if( car=='-' ) {
- rad=0;
- car = readchar();
- }
- else {
- rad = (Nod*) malloc(sizeof(Nod));
- rad->data = citesteNume();
- if( car!='(' ) {
- rad->stg = 0;
- rad->drt = 0;
- }
- else {
- car = readchar();
- rad->stg = citesteArboreB();
- if( car!=',' ) rad->drt = 0;
- else {
- car = readchar();
- rad->drt = citesteArboreB();
- }
- if( car!=')' ) eroare();
- car = readchar();
- }
- }
- return rad;
- }
- Nod* creareArboreB()
- {
- printf("\nIntroduceti arborele:");
- car = readchar();
- return citesteArboreB();
- }
- void elib(PNod &p) //<------------------------------------------------------------
- {
- if(p)
- {
- elib(p->stg);
- elib(p->drt);
- delete p;
- p=0;
- }
- }
- void postOrdine(PNod p) //<------------------------------------------------------------
- {
- if(p)
- {
- postOrdine(p->stg);
- postOrdine(p->drt);
- cout<<p->data;
- }
- }
- int adancime(PNod p) //<-------------------------------------------------------------
- {
- if(!p)
- return 0;
- else
- return 1+max(adancime(p->stg),adancime(p->drt));
- }
- int max(int a, int b) //<------------------------------------------------------
- {
- return(a>b)?a:b;
- }
- int nrN(PNod p) //<------------------------------------------------
- {
- if(!p)
- return 0;
- else
- return 1+nrN(p->stg)+nrN(p->drt);
- }
- int nrFrunze(PNod p) //<----------------------------------------------
- {
- if(!p)
- return 0;
- else
- if(p->stg || p->drt)
- return nrFrunze(p->stg)+nrFrunze(p->drt);
- else
- return 1;
- }
- void afis(PNod p, Atom &vMax) //<---------------------------------------------
- {
- if(!p)
- return 'A'-1;
- else
- {
- Atom vs,vd;
- vs=vd='A'-1;
- afis(p->stg,vs);
- afis(p->drt,vd);
- vs=(vs>vd)?vs:vd;
- if(p->data>vs)
- cout<<p->data;
- vMax=(p->data>vs)?p->data:vs;
- }
- }
- void inv(PNod &p) //<--------------------------------------------
- {
- if(p)
- {
- PNod aux=p->stg;
- p->stg=p->drt;
- p->drt=aux;
- inv(p->stg);
- inv(p->drt);
- }
- }
- void afisP(PNod p)
- {
- if(!p)
- cout<<'-';
- else
- {
- cout<<p->data;
- if(p->stg || p->drt)
- {
- cout<<'(';
- afisP(p->stg);
- if(p->drt)
- {
- cout<<',';
- afisP(p->drt);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement