Extras din laborator
#include<stdio.h>
#include<malloc.h>
struct AVL
{
int info;
AVL *st;
AVL *dr;
int GE;
};
int min(int a, int b)
{
return (a<b)?a:b;
}
int max(int a, int b)
{
return (a>b)?a:b;
}
int inaltime(AVL *LVArad)
{
if(LVArad==NULL)
return 0;
else return LVArad->GE;
}
AVL *creare_nod(int LVAval)
{
AVL *LVAp;
LVAp=(AVL*)malloc(sizeof(AVL));
LVAp->info=LVAval;
LVAp->dr=NULL;
LVAp->st=NULL;
LVAp->GE=0;
return LVAp;
}
void Inordine(AVL *LVArad)
{
if(LVArad!=NULL)
{
Inordine(LVArad->st);
printf("%d ",LVArad->info);
Inordine(LVArad->dr);}
}
AVL *rotatie_simpla_stanga(AVL *&LVArad)
{
AVL *LVAp;
LVAp=LVArad;
LVArad=LVArad->dr;
LVAp->dr=LVArad->st;
LVArad->st=LVAp;
LVArad->GE=max(inaltime(LVArad->st),inaltime(LVArad->dr))+1;
LVAp->GE=max(inaltime(LVArad->st),LVArad->GE);
return LVArad;
}
AVL *rotatie_simpla_dreapta(AVL *&LVArad)
{
AVL *LVAp;
LVAp=LVArad;
LVArad=LVArad->st;
LVAp->st=LVArad->dr;
LVArad->dr=LVAp;
LVArad->GE=max(inaltime(LVArad->st),inaltime(LVArad->dr))+1;
LVAp->GE=max(inaltime(LVAp->dr),LVArad->GE)+1;
return LVArad;
Conținut arhivă zip
- Arbori AVL.cpp