Recherche dans un ABR
On considère un arbres binaires de recherche qui :
- soit est l’arbre vide identifié par
None; - soit possède une valeur
clé, un sous-arbre gauchesaget un sous-arbre droitsad, tous les trois regroupés dans un triplet(sag, clé, sad).
graph
n1((1)) --- n0((0))
n1 --- n2((2))
n2 --- n4((" "))
n2 --- n3((3))
Ainsi, l’arbre binaire de recherche abr_1 ci-dessus est créé par le code python suivant :
n0 = (None, 0, None)
n3 = (None, 3, None)
n2 = (None, 2, n3)
abr_1 = (n0, 1, n2)
Écrire une fonction récursive recherche_abr qui prend en paramètres un arbre binaire de recherche abr et une cible valeur, et qui renvoie True si l'ABR contient la cible et False sinon.
Exemple
>>> recherche_abr(abr_1, 4)
False
>>> insertion_abr(abr_1, 0)
True
Tests
Les tests de la fonction se dérouleront en deux temps :
- les tests s'assureront d'abord que la fonction renvoie des réponses correctes ;
- sa complexité en temps est ensuite testée, pour vérifier qu'elle respecte les spécifications attendues pour un ABR.
Tests aléatoires et performances
Votre tracé sera ici
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
.128013:pbv(40i2edm3;sN7= 1o5w_lSnatf)9h6,crgTyPFku8/050l0k0D0C0i0z0p0t0K0z0C0p0p0s010D0i0c010406050p0S0m0m0C0L0O040A0v0z0S0/0v0B050U0_0{0}0 0@0c04181f051i0U1i1k1f0@0l0i0e0%0)0+0-0H0i0M0H0z1y0H0D0=050Y0d0z0k1t0*0,011x1z1B1z0D1H1J1F0D0d0v0l0 1G0L1g0D0H0%120p0c0C0B0-0j011L1v010E0!0k0B0C0m0k1F1-1/1@1N1`1J1}1 0=0a0t0P0L0v0c0v0p0i150B0t0W1+0L0L0k0K2k18220B1g0U1)2x0D1%1$1(0l240-1B0B1|2h1F1q1s0(1M2H0i2J0B1Z1r1F0c2q1g2v2x2#0^1.2l2P1^2U0L0|0z0=0t0u2u2)0?2(232+1N2-2/2;0j2@1/2_2v2G012~0C2:040t0n322w0@352|0-383a0t0g3e342)363k2;0w3o3g3q3i370v2.392;0I3v2`2*1u2}3A2 3b0r3F3h3I3j3K3C3b0T3O3x3Q3z3B3l0G3W2{3Y3s040u0h3%3H2Q3Z3L0u2?192^1h2Z182N2A0l2E360K1Z201g3}1j3{2%3^3305420W2!3X3:0R0=0W0E3o3G360x2;4m3P3:0B0E0=2q0K0H0k0L4y0k0y0C0d0L4r4g1^0;040f4I3(4t0=0}4G0k4O3/4K0=0J3o0t4n3y0B0=0e390k0S4H4a2w4$3Y4L0F0b3v0t4`4#4s1^4i040i4l4/3b4;4Q044S2q4!551^0v4p500p5a4}1N0R0K0=0q164U535b1N4L4^53064{5x4|4J5j4w0X4-17535z4P4~5l040Q390p5p2#065w4{5r3j0=0p0C0M4V364L4Z5G5U370=0(5P3_5i0-5$5h5A5V045X0l5=5I1N0v0=0s5{4W2}4R0L4T4_5T5/014 51613r5+1J6d3y5~04020M0D0o6h3)4)4+4-5!3y5t675y5H620-4 2q0D5E6p564x4z4B4z4E4G6u4=0=4N5q694(5^5Y6O3:5;5(6T6r1J6t6S5?014?6x6z364 0k1B522#6.4%6f5-336^3Y6j020z6n6G2,6$4,4.2%696w5v6y4`5)6C5D0L5F6@5)6U6I4A4C6M775.6*4L6R786*6U5_6X4X045%7j6#044*6%7q4b790=0F6-7e0=6;5O7z5s0=5u5Q7c6}4h5C6E7h735j5K0N0L0S6{3f184d0k2x2Y7;3|1r3~2A2C2y1Y1!2A4F1J2x3}0@0U0W0Y0!0p04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)