avl

3
functii avl: int inaltime (nod *p) { int c; if (p == NULL) return -1; else { c=p->h; return c; } } void adaug (nod *&p, int x) { if (p == NULL) { p = new nod; p->info=x; p->s=NULL; p->d=NULL; p->h=0; } else { if (x<p->info) { adaug(p->s, x); if ((inaltime(p->s) - inaltime(p->d)) == 2){ if (x < p->s->info) p=rss(p); else p=rds(p); } }else if (x >p->info) { adaug(p->d, x); if ((inaltime(p->d) - inaltime(p->s)) == 2) { if (x > p->d->info) p=rsd(p); else p=rdd(p); } }else cout<<"Elementul exista deja. \n"; } int m, n, c; m=inaltime(p->s); n=inaltime(p->d); c=max(m,n); p->h=c+1; }

Upload: leslie-nelson

Post on 10-Sep-2015

215 views

Category:

Documents


2 download

TRANSCRIPT

functii avl:

int inaltime (nod *p) {

int c;

if (p == NULL)

return -1;

else {

c=p->h;

return c;

}

}

void adaug (nod *&p, int x) {

if (p == NULL) {

p = new nod;

p->info=x;

p->s=NULL;

p->d=NULL;

p->h=0;

} else {

if (xinfo) {

adaug(p->s, x);

if ((inaltime(p->s) - inaltime(p->d)) == 2){

if (x < p->s->info)

p=rss(p);

else

p=rds(p);

}

}else if (x >p->info) {

adaug(p->d, x);

if ((inaltime(p->d) - inaltime(p->s)) == 2) {

if (x > p->d->info)

p=rsd(p);

else

p=rdd(p);

}

}else

coutd);

c=max(m,n);

p->h=c+1;

}

nod *caut_min (nod *p) {

if (p==NULL) {

couts;

return p;

}

}

nod *caut_max (nod *p) {

if (p==NULL) {

coutd;

return p;

}

}

void caut_nod (nod *&p, int x) {

if (p==NULL)

couts, x);

else if (x > p->info)

caut_nod(p->d, x);

else coutinfo)

sterg_nod(p->d, x);

else if ((p->s == NULL) && (p->d == NULL)) {

c=p;

free(c);

p=NULL;

couts;

free(c);

coutd);

}

tnod *find(tnod * r, int x)_

if (r==NULL || r->nr==x)

return r;

else

if(r->nr > x)

return find(r->s, x)

else

return find (r->d, x)