Insertion dans un ABR (3)
Dans cet exercice, on considère des arbres binaires de recherche qui sont :
- soit l’arbre vide identifié par
None
; - soit un nœud, contenant une clé et deux sous-arbres gauche et droit et représenté
par un triplet
(g, v, d)
oùg
etd
sont les sous-arbres gauche et droit etv
la clé.
Ainsi, l’arbre binaire de recherche abr1
ci-
contre est créé par le code python ci-
dessous
🐍 Script Python
n0 = (None, 0, None)
n3 = (None, 3, None)
n2 = (None, 2, n3)
abr1 = (n0, 1, n2)
Écrire une fonction récursive insertion_abr(a, cle)
qui prend en paramètres une
clé cle
et un arbre binaire de recherche a
, et qui renvoie un arbre binaire de recherche
dans lequel cle
a été insérée.
Dans le cas où cle
est déjà présente dans a
, la fonction renvoie l’arbre a inchangé.
Exemples
🐍 Console Python
>>> insertion_abr(abr1, 4)
((None,0,None),1,(None,2,(None,3,(None,4,None))))
>>> insertion_abr(abr1, -5)
(((None,-5,None),0,None),1,(None,2,(None,3,None)))
>>> insertion_abr(abr1, 2)
((None,0,None),1,(None,2,(None,3,None)))
Compléter le script ci-dessous
###
# Testsbksl-nlbksl-nln0 = (None, 0, None)bksl-nln3 = (None, 3, None)bksl-nln2 = (None, 2, n3)bksl-nlabr1 = (n0, 1, n2)bksl-nlbksl-nlassert insertionpy-undabr(abr1, 4) == ((None,0,None),1,(None,2,(None,3,(None,4,None))))bksl-nlassert insertionpy-undabr(abr1, -5) == (((None,-5,None),0,None),1,(None,2,(None,3,None)))bksl-nlassert insertionpy-undabr(abr1, 2) == ((None,0,None),1,(None,2,(None,3,None)))bksl-nlbksl-nl# Autres Testsbksl-nlbksl-nlabr2 = insertionpy-undabr(abr1, -5)bksl-nlassert insertionpy-undabr(abr2, -2) == (((None, -5, (None, -2, None)), 0, None), 1, (None, 2, (None, 3, None)))bksl-nlbksl-nlbksl-nl 5/5 Aide
Réfléchir à une fonction récursive