Enonce
Un arbre binaire est soit vide, représenté en Python par la valeur None, soit un nœud, contenant une étiquette et deux sous-arbres gauche et droit et représenté par une instance de la classe Noeud donnée ci-dessous.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | |
La fonction récursive parcours renvoie la liste des étiquettes des nœuds de l’arbre implémenté par l’instance arbre dans l’ordre du parcours en profondeur infixe à partir d’une liste vide passée en argument.
Compléter le code de la fonction insere qui prend en argument un arbre binaire de recherche arbre représenté ainsi et une étiquette cle, non présente dans l’arbre, et qui :
- renvoie une nouvelle feuille d’étiquette
cles’il est vide ; - renvoie l’arbre après l’avoir modifié en insérant
clesinon ; - garantit que l’arbre ainsi complété soit encore un arbre binaire de recherche.
Tester ensuite ce code en utilisant la fonction parcours et en insérant successivement des nœuds d’étiquette 1, 4, 6 et 8 dans l’arbre binaire de recherche représenté ci-dessous :

>>> arbre = Noeud(5, Noeud(3, None, None), Noeud(7, None, None))
>>> parcours(arbre, [])
[3, 5, 7]
>>> arbre = insere(arbre, 1)
>>> arbre = insere(arbre, 4)
>>> arbre = insere(arbre, 6)
>>> arbre = insere(arbre, 8)
>>> parcours(arbre, [])
[1, 3, 4, 5, 6, 7, 8]
>>> arbre2 = Noeud(5, Noeud(3, None, None), Noeud(9, None, None))
>>> arbre2 = insere(arbre2, 7)
>>> parcours(arbre2, [])
[3, 5, 7, 9]