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; } }
void main() { input(); printf("\nUNIFICATION ALGORITHM\n\n"); if(strcmp(p[0].symb,p[1].symb)) fail(); if(p[0].num!=p[1].num) fail(); //Unification unification(); printf("%s",subst); getch(); }