示例#1
0
Arbre unification(Arbre arbre)
{
    assert(arbre != NULL);
    //printf("\n %d %d",isUni(arbre),arbre->couleur);
    if(is_feuille(arbre))
        return arbre;

	if(isUni(arbre))
	{
		arbre->couleur = arbre->fils[NO]->couleur;
       // printf(" %d  ",arbre->couleur);
        freeArbre(&arbre->fils[NO]);
        freeArbre(&arbre->fils[NE]);
        freeArbre(&arbre->fils[SO]);
        freeArbre(&arbre->fils[SE]);
        return arbre;
    }
    else
    {
        unification(arbre->fils[NO]);
        unification(arbre->fils[NE]);
        unification(arbre->fils[SO]);
        unification(arbre->fils[SE]);
        return arbre;
    }


}
示例#2
0
int main()
{
    Liste l1=Exemple1();
    Liste l2=Exemple2();
    printf("Liste1 de 7 elements :\n");
    afficherliste(l1);
    printf("Liste2 de 6 elements :\n");
    afficherliste(l2);


    Arbin a1=la(l1);
    Arbin a2=la(l2);
    printf("Affichage de l'arbre1\n");
    afficherArbre(a1);
    printf("Affichage de l'arbre2\n");
    afficherArbre(a2);
    printf("\n");

    Liste l3=al(a1);
    printf("al sur arbre1 :\n");
    afficherliste(l3);

    Arbin u0=union0(a1,a2);
    Arbin u1=union1(a1,a2);

    printf("Affichage de union0 :\n");
    afficherArbre(u0);

    printf("Affichage de union1 :\n");
    afficherArbre(u1);

    printf("Oter le minimum de l'arbre1\n");
    Arbin o=om(a1);
    afficherArbre(o);

    Arbin i=ins(a1,42);
    printf("Insertion de 42 dans l'arbre1\n");
    afficherArbre(i);

    freeListe(l1);
    freeListe(l2);
    freeListe(l3);

    freeArbre(a1);
    freeArbre(a2);
    freeArbre(u0);
    freeArbre(u1);
    freeArbre(o);
    freeArbre(i);


    return 0;
}
示例#3
0
void freeArbre(Arbre * arbre)
{

    //printf("\n***Free***");
    if(*arbre == NULL)
    { return; }

   // printf("\t*Free fils*");
     int i;
     for(i=0; i<NB_FILS; i++)
     {
       // printf("\n\t |_ ");
        freeArbre(&(*arbre)->fils[i]);
        //(*arbre)->fils[i] = NULL;
     }
    free(*arbre);
    *arbre = NULL;

}