avl
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)