Insertion dans un ABR (1)
Un arbre binaire est implémenté par la classe Arbre
donnée ci-dessous.
Les attributs fg
et fd
prennent pour valeurs des instances de la classe Arbre
ou None
.
Python |
---|
| class Arbre:
def __init__(self, etiquette):
self.v = etiquette
self.fg = None
self.fd = None
def parcours(arbre, liste):
if arbre != None:
parcours(arbre.fg, liste)
liste.append(arbre.v)
parcours(arbre.fd, 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 insère un nœud d’étiquette cle
en feuille de l’arbre implémenté par l’instance arbre
selon la spécification indiquée et de façon 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 code ci-dessous
.128013lA9( _4:;=vm26!-uS8w.s3/fr7gebhpPicN0Ă©5qa,onkyd1)t050V0D0Y0P0I0b0w0f0J0b0P0w0w0k010Y0I0G010406050w0r0m0m0P0A0U040s0R0b0r0?0R0S050y0}0 11130{0G04051j1c1m0y1j0{0V0I0l0+0-0/0;0-0S0C0r0P0C0D0q0G0U0Y0F1a0f0F0I0C0F0b1O0F0Y0_050$0E0b0D1v0.0:011N1P1R1P0Y1X1Z1V0Y0A1k1J0+160w0G0P0S0;0n011#1x010z0(0D0S0P0m0D1V1`1|211%241Z27290_0a0f0H0A0R0G0R0w0I190S0f0!1^0A0A0D0J2u1c2c0S1k0y1J2H1;1?1=1W0V2e1y0I0S262r1V1s1u0,1$2R2T0S0R2X1V0G2A1k2F2H2.0|1{2v2Z222%0A100b1V0P1M2A0z0;030g0g0J2(0D1R2$0R0q0W3c0_0f0W1c0P2/2=0`2;2d2@1%2_2{2}2 0D3101333537392U3c0q1 040f0n3i3k1|3m2F2Q013r0P2|1k2~0F303234360!3B2%3D0x3f0x3J2E3l0{3N3p0;3Q3S053U3W3x3Y3A2S3C3d0h3f0h3+1d3-3n2?1w3q0R2`3R3t3V3v3X3z3!3}3$3d0N3f0N432.3.2=3O3=4d3_3y3Z384j3b3d0o3f0o4p453/483;4a3s3T3u3w4x3|3a3D0B3f0B4G3L4r3o4J3P4L4c4N4e4P3{4i4S3d0t3f0t4X2G4Z472!4$4b3?3^4f3`4h4z4.0q0d3f0d4?3M4s3:4{4M3@4O4g4y3#4B3c0L0_0W0L584^4t4%4}5f505h4A3D0W0W5m3h0y3j3,4Y465r4|4v4 4Q4-3~3c3F0W3I5D3K4@5H5b4u4)4w4,525O0W3(045(5p5W4#5Y5e4*5g4R5%405*425T5F5V4I4`5/4~4+515i5y4m5*4o5{445G5~2^5s5K625w530W4D5*4F694q5-5 6e5Z5L5#643d0W4U5*4W6n4H5a5.6r5:5!635x6w4:5*4=6B6b6D6q5J6s6g5?4k3c555*576O5}6Q6d6S6G6t6I530n5l046.5,6c496)615=5N6W0n5A6:5C5E6a6$4!6R5d6_5v6V5j0n3F7b6=6%6@765u5M5$6|5)0n3*6#59746(7h5;786{7a5^0n5`716o6?4K6^7i6u6J3E660n687B6C7r7g4(6*6U7w3D0n6k7W7e7P7E7t6H6h5O0n6y7*581n2,1c2X2K0V1?2P5b4y2W1t1k2+0D2-3l5|1k4y802d0I0V0;342F5y3t87896,5%202i0D8f7(6W6~3+7D010T0_3p826p220u3f8v8q0S0J0_0c0A0E2A8A7f0;0^040i820{72852v8e018a2=7V8d888V8g6|8i288k8#8m7a1V5T0f8:0f8w1%8s040!0z8J7!018y3G8|4_220z0m0_342S2t34913O8M0e9b5b0E8M0w388{8R8?8L0_0Q828=8B0_0#0I0O0r0#0Y0D9f4#8M0X8O8R8Q2:3N8U8W1|3%8Z8l799O0f8j9Q7U3d5)3J8;9!9s8K019h0_9j0b9l9J9%0R0_0v9C5 0_0l9r9n019:040k9`9t049v9x9z9B9H9b9L0g8b3 9P8+9Rac9T8)9V7k5j5^9Z9#8:9{9)049+9-818q9}9=9ma10z0Ca09/0_9 8R9$8}0T8D040K1aa66oaz4sa9ab0q665ea98,3D4mah29aj6vaV8.3jaoap8qarat9?22axa=3q0_0z0VaD8}9}aG2.aI928@aLaN2T8Pa88!9M0S3D6kaXba8$5j4Da$8*7H53be5T9IavaSbgaU6ybfa(7I4Ubkbx53bv5{8q8^8`a^0;8 8=aR8}0S0z0_1{0A360r0A0wbI019dbX0S0_118HaPbr8}8M9qaH9{b#041R0w9AbX9E9GaQ9.86bt8X4/adbm5O4:bAae9W0q6Lana.9%8^0Iau3Lb24tb$8G8Ib.aw0_0pb03lch5baK0_b6b)3L9{8Mb`45bM8Tb~9N3d6Ybwc6ak3D55c5c26WcI8/a-b/bQ11bTbVb^0_9ecDci04b%clb|b30;a@c$5Xa`aCc/9D9pa}c,3P0_b=b@c?4`9Eb8c$aTb 5kc1bh5y5lcOd86w6/ca9#cUb;0Ib?cx2G9{c.c+c%0P0G0G26a|c 22bZdwa_c(ckdl8S3Odob*c`b:9_dz9o040Xd2dpd4cG3c8o2~aYafdT8(a%cKa)5za+3GcTa1bRcXbWdLbYc!b!cjb(bXdGcyaAdvdp5bb,c_c%c}dDcz0_dOa7d3cFbc6w3FcJcP5j5RdZbldc5Pd(9!9{8^2A0YbU1bcm9%b:e2dPdH0fdRea3c9YdVbgaZ6w3(dbeGeCd(bqd`bs8faU0WameEbB5@eheV8nambEcc0_bHd/bKb!bP042S9jc*eyd~d;d/b:c)e38qd etbN8t1ZcZdNcB5Ge8eQd50WaWeUd#7If8eXfb6iaWe#8}bK8;bX0w0V0_029x0R0Y0jfq0rfsfufrft0fe_0f0Db?0f0r2Tez0Sb?1|0J1!2x0-2e1!8Fb(0f9x0Iez0m0G0b0M290Sc~b{eyeA5ybefaeef-fef:6wbo5E8qfn3fa-fHfBdC0f0E2S0%2A2w1!2A0J0F0DbSgaayf*eOb}f6dS6xd7eKgkeJdXgk2Hf_9%f{d)8:fvfxgxftgz0jexggcEgieB0Wc9f/ejgIf=gLc9cScbaJ0_cee0c:040,dDcs4#9}020bftgV5.d?e:gEdF9;d=04dKd}c@8NgDdm9Ke95ycIgKgmcN9Uff5%cRa,d*e$e-cf2Gg!9@dBd@d/d_g{euc;g*4`0R8 djhma?8 2%0Yhrb4cvaOf1f35Vf58#aU6.gldXhGgoc7hGgrgva-gRdIgTfKgbe`9%dyg@hee_d^g:e@hld/e|b1dhgYf1e6gfhjghhEd56}hHhL5AhKcL3dh^hNhPen9u0)hVb+0_hB3mhDbb7Vech0hI1 h|a)7belhPfla1h!hhh$hY2^h(h+cn9~hw3;8EdCf1c#irdAh-h)e5g`dEf,h~eDezeFhIeIh3f?3E9YgQhd228^389jhAiI5HiK3EeTiNeY7xgNeK7zikaoi2haixc{hfg-h;c`hidEgWa{i^hogTd.iu9/htfsi^cuaMhziGg_e7dQg}h~f9i+h46|a#iRej7Li;ildhe.hUiBg;ioiDc-iqe;g+04j1jeb-j6e~gXf0jeh/cCjhgG7Vf.jliS7Wi.hIf^hOembFi3i!jei8eNi|jUaah@bviehLbzjpi/bDh7iliWdAjzjDhnjCg.j0d|crdnaFi^b:fTi{i g^iCj isjLi5c`d1jg810y847.7 7:7|1c0Y7?kt2N2I0P1Ykq0y7;8Q0!0$0(0w04.
# Tests
(insensible Ă la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)