Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void ComprobarIzqdo(nodo n, Abin A, int *error){
- if (n!=NODO_NULO){
- if (RecuperarB(n,A) < RecuperarB(RaizB(A),A)){
- ComprobarIzqdo(HijoIzqdoB(n,A),A,error);
- ComprobarIzqdo(HijoDrchoB(n,A),A,error);
- }else{
- *error = 1;
- }
- }
- }
- void ComprobarDrcho(nodo n, Abin A, int *error){
- if (n!=NODO_NULO){
- if (RecuperarB(n,A) > RecuperarB(RaizB(A),A)){
- ComprobarDrcho(HijoDrchoB(n,A),A,error);
- ComprobarDrcho(HijoIzqdoB(n,A),A,error);
- }else{
- *error = 1;
- }
- }
- }
- int Binario_AVL (Abin A){
- int error = 0;
- if (ArbolVacioB(A)){
- return 0;
- }
- ComprobarIzqdo(HijoIzqdoB(RaizB(A),A),A,&error);
- if (error == 1)
- return 1;
- ComprobarDrcho(HijoDrchoB(RaizB(A),A),A,&error);
- if (error == 1)
- return 1;
- Binario_AVL_rec(RaizB(A),A, &error);
- return error;
- }
- void Binario_AVL_rec (nodo n, Abin A, int *error){
- int equilibrio;
- if (n!=NODO_NULO){
- if (HijoIzqdoB(n,A) != NODO_NULO){
- if (RecuperarB(HijoIzqdoB(n,A), A) > RecuperarB(n,A)){
- *error = 1;
- }
- }
- if (HijoDrchoB(n,A) != NODO_NULO){
- if (RecuperarB(HijoDrchoB(n,A), A) < RecuperarB(n,A)){
- *error = 1;
- }
- }
- equilibrio = AlturaRec(HijoDrchoB(n,A),A) - AlturaRec(HijoIzqdoB(n,A),A);
- if (equilibrio <= -2 || equilibrio >= 2){
- *error = 1;
- }
- Binario_AVL_rec (HijoIzqdoB(n,A),A,error);
- Binario_AVL_rec (HijoDrchoB(n,A),A,error);
- }
- }
- int AlturaRec (nodo n, Abin A){
- if (n == NODO_NULO)
- return (0);
- return (1 + Maximo(AlturaRec(HijoIzqdoB(n,A),A) , AlturaRec(HijoDrchoB(n,A),A)));
- }
- int Maximo (int a, int b){
- if (a >= b){
- return (a);
- }else{
- return (b);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment