Académique Documents
Professionnel Documents
Culture Documents
TD : ARBRES
2. Ecrire la fonction checkmul(tree) qui prend un arbre tree en argument et vérifie si l'arbre respecte la
règle suivante et renvoie True (obéit à la règle) ou False sinon.
Règle : chaque nœud (à l'exception des feuilles) est égale au produit des valeurs de ses nœuds fils.
Remarque : chaque nœud contient un nombre et chaque interne a exactement deux fils:
15 7 35
3 5 3 5 7 5
-5 -1
>>>A=[15,[3,[],[]],[5,[],[]]]
>>>B=[7,[3,[],[]],[5,[],[]]]
>>>C=[35,[7,[],[]],[5,[ -5,[],[]],[ -1,[],[]]]]
>>>checkmul(A)
True
>>>checkmul(B)
False
>>>checkmul(C)
True
a
3. Ecrire une fonction nommée path_exists(tree,path) qui vérifie si
un chemin path donné existe dans un arbre binaire tree. Les nœuds de
b e
l'arbre contiennent des chaines de longueur un :'a', 'b', 'c',…
Un chemin existe dans un arbre si ce chemin peut être généré en allant
c d f g
d'un nœud parent à un nœud fils.
(A)
>>>A=['a',['b',[ 'c',[],[]],[ 'd',[],[]]],['e',[ 'f',[],[]],[ 'g',[],[]]]]
>>>path_exists(A,'eg')
True
>>>path_exists(A,'abf')
TD-ARBRES 1/5
False
2- Ecrire la fonction récursive valExpression(A) qui permet d’évaluer une expression arithmétique
représentée par un arbre binaire.
>>> valExpression(A)
-28
2- Ecrire la fonction itérative MaximumItr(A) qui retourne la plus grande valeur de l’arbre binaire de
recherche A non vide.
3- Ecrire la fonction récursive MaximumRec(A) qui retourne la plus grande valeur de l’arbre binaire de
recherche A non vide.
4- Ecrire la fonction récursive Recherche(v,A) qui retourne True si la valeur v est dans l’arbre binaire
de recherche A , False sinon.
5- Ecrire la fonction récursive Inserer(v,A) qui permet d’insérer la nœud v dans l’arbre binaire de
recherche A .
TD-ARBRES 2/5
>>>A=[8,[ 3,[ 1,[],[]],[ 6,[ 4,[],[]],[ 7,[],[]]]],[ 10,[ 9,[],[]],[]]]
>>>inserer(2,A)
>>>A
[8,[ 3,[ 1,[],[ 2,[],[]]],[ 6,[ 4,[],[]],[ 7,[],[]]]],[ 10,[ 9,[],[]],[]]]
8 8
3 10 3 10
1 6 9 1 6 9
4 2 4 7
7
TD-ARBRES 3/5
Ecrire les fonctions :
vide(a) : retourne True si l’arbre a est vide, False sinon
val(a) : retourne la valeur de l’étiquette de la racine de l’arbre a.
fils(a) : retourne la liste des arbres fils du nœud a.
préfixe(a) : retourne la liste des valeurs des nœuds de l’arbre n-aire parcourue en profondeur préfixe.
postfixe(a) : retourne la liste des valeurs des nœuds de l’arbre n-aire parcourue en profondeur postfixe.
parcoursLargeur(a) : retourne la liste des valeurs des nœuds de l’arbre n-aire parcourue en largeur.
nombreNoeud(a) : retourne le nombre de nœuds de l’arbre n-aires a.
estFeuille(a) : qui determine si un nœud est feuille
nombreFeuille(a) :
hauteur(a) :
En Python, on peut représenter un arbre binaire vide par un dictionnaire vide {} et un arbre binaire non vide par un
dictionnaire comprenant 3 éléments :
A={'r' : 12 ,
'g' : {},
'd' : {}
}
A={'r' : 12 ,
'g' : {'r' : 1 , 'g' : {}, 'd' : {} },
'd' : {'r' : 7 , 'g' : {}, 'd' : {} }
}
A={'r' : 12 ,
'g' : {'r' : 1 ,
'g' : { 'r' : 91 , 'g' : {}, 'd' : {} },
'd' : {'r' : 67 , 'g' : {}, 'd' : {}} },
'd' : {'r' : 7 , 'g' : {}, 'd' : {} }
}
A={'r' : 12 ,
'g' : {'r' : 1 ,
'g' : { 'r' : 91 ,
'g' : {},
'd' : {}
},
'd' : {'r' : 67 ,
'g' : {},
TD-ARBRES 4/5
'd' : {}
}
},
'd' : {'r' : 7 ,
'g' : {},
'd' : {'r' : 82 ,
'g' : {},
'd' : {}
}
}
}
A={'r' : 12 ,
'g': { 'r' : 1 ,
'g' : {'r' : 91 ,
'g' : {},
'd' : {}
},
'd' : {'r' : 67 ,
'g' : {},
'd' : {}
}
},
'd': {'r' : 7 ,
'g' : {},
'd' : {'r' : 82 ,
'g' : { 'r' : 61 ,
'g' : {},
'd' : {}
},
'd' : {}
}
}
}
Réécrire toutes les fonctions vues au cours en utilisant un dictionnaire pour représenter un arbre binaire
TD-ARBRES 5/5