Insertion dans un ABR (4)
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.
đ Script Python |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | class Noeud:
"""Classe représentant un noeud d'un arbre binaire"""
def __init__(self, etiquette, gauche, droit):
"""Crée un noeud de valeur etiquette avec
gauche et droit comme fils."""
self.etiquette = etiquette
self.gauche = gauche
self.droit = droit
def parcours(arbre, liste):
"""parcours récursivement l'arbre en ajoutant les étiquettes
de ses noeuds à la liste passée en argument en ordre infixe."""
if arbre != None:
parcours(arbre.gauche, liste)
liste.append(arbre.etiquette)
parcours(arbre.droit, liste)
return liste
|
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
cle
sâil est vide ;
- renvoie lâarbre aprĂšs lâavoir modifiĂ© en insĂ©rant
cle
sinon ;
- 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 :
flowchart TD
A(5) --- B(2)
A --- C(7)
B --- D( )
B --- E(3)
linkStyle 2 stroke-width:0px;
style D opacity:0;
Compléter le script ci-dessous
.128013(qd0h75v/;Ă©6kgSw2)8m9N=lt4:eRb,cpa3u1roisn.fyP 050d0C0z0I0O0y0P0V0G0y0I0P0P0x010z0O0H010406050P0K0u0u0I0M0T040p0N0y0K0:0N0Q050j0`0|0~100^0H04051g191j0j1g0^0d0O0i0(0*0,0.0f0O0o0f0y1x0f0z0?050Z0E0y0C1s0+0-011w1y1A1y0z1G1I1E0z0M1h0z0f0(130P0H0I0Q0.0r011K1u010S0#0C0Q0I0u0C1E1%1)1.1M1;1I1@1_0?0a0V0U0M0N0H0N0P0O160Q0V0X1#0M0M0C0G2e191|0Q1h0j1Z2r1W1Y1X1F0d1~0.1A0Q1?2b1E1p1r0)1L2B0O2D0Q0N2H1E0H2k1h2p2r2V0_1(2f2J1/2O0M0}0y0?0V0L2o2Z0@2Y1}2#1M2%2)2+0r2.1)2:2p2A012^0I2*040V0J2|2q0^2 2?0.32340V0A382~2Z303e2+0h3i3a3k3c310N2(332+0m3p2;2!1t2@3u2_350g3z3b3C3d3E3w350t3I3r3K3t3v3f0v3Q2=3S3m040L0e3X3B2K3T3F0L2-1a2/3q3Y3*3!0L2{3/2}3;3)2$3M340L373`393A3l3 0?0L3h433j3=3~3U483o4b3|464f3#3y4i453s3@3H4o3J3?473#3P4t3R4v4l0L3W4z4d3D4l0r3%4F3}4H3F0r3.2X1m2T192H2u0d1Y2z3s0G2P1`1h4V1i4T4R2X4#0X2U4A1/0n0?0X0S3i4p3S0q2+4`4u2$0S0?2M0P0C2k4 4;1M0=040b584G3d0?0~0E574b4{3*5b0F3i0V5m2$0?0)0C5e4M0.5b0s0B3(304}350V5H5x300P0d0?020c0K0N0z0k5O5Q5S5U5R0k54561J0*1s1J0d1)0%0y02030J0v0k5i2k0V0E2M0!5@2h2k0G0f565 5w4L5K5M5G5H2k2S0l550Q0z0l0V1(0M0V5?0C0R5D3s5L2+5H0V0D0Y0N0K0M2D0V5-5/5;6k0V0u2P0O1;0l0R5X5W5P5Y6L0k3p6r5r501M4?046H5q5s2@5h0M5j632V6T590.0N0?0x0x6Z6U0.0n0G0?0w176)2/6!5z0?5C4i6S6S6 016W2k0z6w184b6+5f316`0N0C0K0d5J3s5b5d5l6?7g045v7m3S5o6=6,776_046{2D7v5n0?5p7d766^7h7E7q7z5A7y7f0G0L0?030(2k0I2e2g5.5:0k0K6y0S7j0#1I6R6r7K0?0C0$6}2}765b722V06747:7r6W6Y7J7r0Q5u7.847z6.04020y5S7R5y7s6k7F1/8b6m7O7f86040Y0O5P0Y0z7^2q7`715q7~7 74768q8j8o8h8m8k6#040o0I0K628g308b6;898p530Q555k2X7r7o8L5g048H8$8a0?8n8-8X8N8P8R8I307x8W8h8q7u8_7n0?0s7/7 7;8r7@8)017{948D5I856$6(998K903Z4@282d8S3s8U9p9l6X8Z5#998(9k3?9g8#6~7r9j8;8}9m0N9o9z1/8{6*8F878x4:7f7Q7d8C95810?797b9s9A8+6%9C3{4j4q5h9$8l6/9/8M6{7j7l9L5a0?7p9G300u0O0?4h9~91047I9O817B7D9R8za69=6@aa6|9x926n9t0Iaf019r8|3l8Y8!ac8%9|998Gajaear3sa00?3_a47wak649-8+aoaqa87z8q5!9*8yaw5cay9.9`70aBaP7faE0442aH7G0493aKamaN9;aC9taSav7PaxaZ8iaAa72/7e8ha(4sa+9MaJ7}9PaMa?3*aOb0b9a^aA9}9DaQaYb59{a#be7ra(4Qbj9Tb73:b9anbb9:048Va$9H9uaubhaXbabma!a 2}b19 a1044abK9abv3{bxa;bBaoaR9vaT9S8h9ybTaza|9Nbp7za(4nbT9Ub89fbJb/7fbdbNbfb$a_buaWa|b,b?7Haoa(4yc6a-3z0j4.0C2r2Scg4U1q4W2u2x2s0I1Hcj0j4V0^ct0Y0!0$04.
# Tests
(insensible Ă la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)