pascal > Validation d'abre bicolore d'entiers

TitreValidation d'abre bicolore d'entiers
Postée le15-12-2008
Affichée692
Mini-lien
Description

Fonction qui valide

EtatInconnu. Inconnu.
Code d'insertion
Options
Afficher les numéros de lignes  Mettre la source en plein ecran  Selectionner la source  Partager sur Facebook 
Téléchargement Telecharger en format txt  Telecharger en format pdf
Plein ecran
{Définition : un arbre coloré est un arbre dont les noeuds sont également décorés par une couleur. Un arbre bicolore est un arbre coloré qui respecte les contraintes suivantes :
1 il existe 2 couleurs différentes, blanc&gris
2 tous les noeuds fils directs d'un noeud coloré en blanc doivent être colorés en gris
3 toutes les branches(racine->feuille) doivent contenir le même nombre de noeuds colorés en gris

Pas besoin de plus d'info, le reste est "nominatif" ;p}


FUNCTION validation_decore(A:ARBRE):BOOLEAN;
VAR rg_prime:INTEGER;
FUNCTION Aux(A:ARBRE;rg:INTEGER):BOOLEAN;{rg contient le nombre de noeud gris}
VAR ok:BOOLEAN;rg1,rg2:INTEGER;
BEGIN IF a=VIDE THEN BEGIN rg:=0;Aux:=TRUE;END ELSE BEGIN
IF Couleur(A)=BLANC THEN IF ((Droit(A)<>VIDE and Couleur(Droit(A))<>GRIS) OR (Gauche(A)<>VIDE and Couleur(Gauche(A))<>GRIS) THEN Aux:=FALSE ELSE BEGIN
ok:=Aux(Gauche(A),rg1) AND Aux(Droit(A),rg2);
rg1:=1+rg1;rg2:=1+rg2;rg:=rg1;Aux:=(rg1=rg2) AND ok;
END;
END;
END;

BEGIN
validation_decore:=Aux(A,rg_prime);
END;