Example #1
0
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);
}
Example #2
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;   
}
Example #3
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 ();
}