int esavl (nodoa * r) { if (r == NULL) return (1); else if ((-1 <= r->equi) && (r->equi <= 1)) return (esavl (r->i) && esavl (r->d)); else return (0); }
int main(){ int i; Dicbin a=vacio(); do{ scanf("%d",&i); if(i==0){break;} a=insord(i,a); puts("...."); inorder(a); printf("\n\nLa altura del arbol es: %d", altura(a)); printf("\n\nEl factor de balanceo del arbol es: %d" , factbal(a)); if(esavl(a)){ printf("\n\nEl arbol es AVL"); } else{ printf("\n\nEl arbol NO es AVL"); printf("\n\nRotando el arbol...."); a=hazavl(a); printf("\n\nLa altura del arbol es: %d", altura(a)); printf("\n\nEl factor de balanceo del arbol es: %d" , factbal(a)); } }while(i); puts("**********"); a=hazavl(a); printf("\n\nLa altura del arbol final es: %d", altura(a)); printf("\n\nEl factor de balanceo del arbol es: %d" , factbal(a)); return 0; }
void main (void) { nodoa *raiz = NULL; int valta, vbaja, opcion; int crece; do { printf ("0.-fin 1.-alta 2.-baja opcion: "); scanf ("%d", &opcion); switch (opcion) { case 1: printf ("alta: "); scanf ("%d", &valta); altas (valta, &raiz, &crece); break; case 2: printf ("baja: "); scanf ("%d", &vbaja); bajas (vbaja, &raiz, &crece); break; }; porniveles (raiz); if (esavl (raiz)) printf ("Es avl\n"); else printf ("\a¡¡ NO ES AVL!! \n"); } while (opcion); getch (); }