Parcours en largeur d'arbre binaire presque complet à gauche
Définition
Un arbre binaire est (presque) complet à gauche s'il possède toutes ses feuilles presque à la même profondeur (à 1 près). De plus les feuilles manquantes éventuelles sont toutes du même côté, à droite.
Propriété
Lors d'un parcours en largeur d'un arbre presque complet à gauche, on rencontre tous les nœuds, ensuite les nil.
Réciproquement, on peut reconstruire un unique arbre binaire presque complet à gauche à partir d'une liste d'étiquettes.
Un arbre presque complet à gauche
Pour alléger, il est inutile de dessiner certains nil dans ce cas... Ils existent néanmoins !
graph TB
N0("42")
N0 --> N00("13")
N0 --> N01("7")
N00 --> N000("5")
N00 --> N001("21")
N01 --> N010("18")
N01 --> N011("17")
N000 --> N0000("2")
N000 --> N0001("9")
N001 --> N0010("4")
N001 --> N0011("1")
N010 --> N1000("6")
N010 --> N1001(" ")
N011 --> N1010(" ")
N011 --> N1011(" ")
🐍 Script Pythonliste_largeur = [42, 13, 7, 5, 21, 18, 17, 2, 9, 4, 1, 6]
Ci-dessus, la liste des étiquettes issue du parcours en largeur de l'arbre. On peut alors reconstruire sans équivoque cet arbre binaire presque complet à gauche.
Exercice
Coder une fonction parcours_complet qui prend ab un arbre binaire et qui renvoie valeurs, la liste des étiquettes issues du parcours en largeur de ab.
ab est un arbre binaire représenté avec la classe Noeud.
Si ab n'est pas (presque) complet à gauche, la fonction devra renvoyer le booléen False. 
.339.128013x/.Tr;nbOylaeu)dV63m(P+02è-U],59fq!78 N_o=pcwgv4F1kRéhtsSàLC[ji:E050r0o0(0n0:0m0)0N0T0m0n0)0)0R010(0:0S010406050)0p0v0v0n0g0l040*0Q0m0p160Q0i0N020n0v0S0h0N0#0o1g0g0J0p0o0)050d1d1f1h1j1b0S04051O1H1R0d1O1b0r0:0W0~1012140%0:0V0%0m1)0%0(19050_0j0m0o1!1113011(1*1,1*0(1=1@1:0(0g1P0(0%1_1$010I0{0o0i1u0o010~1m0)0S0n0i140A1:2m2o2a1{2d1@2g0v2i040b0N0x0g0Q0S0Q0)0:1p1r0@2k0g0g0o0T2M1H2t0i1P0d282Y2527261;0r2v141,0i2f2J1:1X1Z0 1`2,0:2.0i0Q2=1:0S2R1P2W2Y331c2n1r2@2b2|0g1g0m190N0Z2V371a362u391{3b3d3f0A3i2o3k2W2+013p0n3e040N0u3t2X1b3w3n143z3B0N0X3F3v373x3L3f0G3P3H3R3J3y0Q3c3A3f0t3W3l381#3o3#3q3C0L3*3I3-3K3/3%3C0M3?3Y3^3!3$3M0H3~3m403T040Z0z453,2^413:0Z3h1I3j3X464e480Z3s4j3u4l4d3a3`3B0Z3E4r3G3+3S4w190Z3O4A3Q4m4v424F3V4I4t4D4M493)4P4C3Z4o3=4V3@4n4E493}4!3 4$4S0Z444*4K3.4S0A4b4:4u4=3:0A4i334Q4X4%0A4q4 4W47524z554#4L4|4H5a4+5c3{0A4O5f4;3_4?4U5l4`5n4|4Z5q4R4|4)5v514?4/5z574S0u4^5D4,3:0u4~4k565J3{0u545N5b4{5Q595T5g5V3B0u5e5Y5m4f5Q5k5(5r5*5#5p5-5w5Q5u5=5A5K5y5_5E5K5C5}5P3B0X5H3j1S311H2=2#0r272*3Z0T2}2B0?1Y1P300o32664I056g0@6o5)0!0i190I2G0v3P5O2b0U3f6C5U3K6x046g0m1@2T0:1q1G6q6I016F3C6H5Z146w190:1v3#0(3P0N6D3o190@1D0o3W50400!193n6Y5)6W6,6T6Z3y0T190Y2e6|5.18040;3W0N7d6,6U0)2r04010-3-1^751@0N0o0I2d0T0n0T1^0n0W2S0N1@0}0I7v0{2L0$0}2O0x0l281q016?7e7f716_040@0I773x6~7Y3Z0I0v190P0P2`2L7*7#40790w7/4e0j790)0o0m7X705)790q7b4P7R7R6-147^197`7|7?2b0Q190e8c6.047*0r0n0_6+86018e040R8o6U6K6:1E8h147;0q7Q7e8p7U7W8z6V6G7~5.0i0I191F0(0P0W0:0@8I7;8I88048a7}356U80824 848E6U7U2R0(0p0g0i8u718Z8#8I8r8g8L3S7)0P8l8n4I7S5)8r0R8t958p8w0o6;8W190w8C4P06858.6/7r8I7!8 4X8O042f2x6=9s7:9h8Y7_7{8$668(190F8^5)6K250p0T9g04817c8,965.8`9E8|8f8I6K8k8m0n9Z048~8%716K0n0S0S2f0r9Q7=9z4n199N9P9`2b808D7d8F9o9F3u8p9r9-9L9u0r0$9x9^9C899Y9 1{8)9T8,a4040:a62X9V3x9X8bak148}9#8P0)8R8T8Vay018B8*4k9U84ap0g0`7`9K8M2B0s3A1E0=2Q3#agaH7h19017o1^aF1^0K7PaHa1839UaO0^8=8@9b6Uawas6u5.aAaH9$929(9*9,9G9.192I0S1@0I6*a:9h9j4 066@4e8G9paHa9b8abba1h6g8=0)0P6g1v1@bfaa789Bb2190n0j9Q9S4_7Z3f8Ea$0ra(01a/5I2b0)bR3C7e1z0i0W0Q0:7n3A7`0N2K0NbI0N0i008Q0N2n0}6m0)6;2kbA0^0N0+0N0V0n9O0%0ob74s8pbXbO7d0*2`1q0F0N2Rb$b(1^107B0:aD1^0@0}0$166;211F0N2Ob:1d2L1^c20p1r2n0gbv0g0}2f7B1h0V0o8=c94B7gbY7RbTbUaL8-b9040W3AcScMaS3x98c-3Z790.0Eanau4X890pcEc:40c/a{c%a*9^bic#a38vc{c}aHb1bD909v8N76bg049_ddc`04bIbKc^9c6y7,c~4ed033c_6^73040Yb+9y8+c$6v190U1(1@du8d6W2|bC3jdy9{8!c|0(dEbrb09!bG9vaD8S8UdXa79HdjbLdFaod8042|cS9@d197199adxdrdUdadlc d!e1dTadafdi9ic^9m7T6$a~dS3a19d?0pd^d}6U0Q6WcqdM1{0!dA0O1qd*2X8p79aK4saMeb9Lds0i0:eqazd{eI01es190f0g8ya=d:ec9v0|ewa 3xezeaa?9naqeed~2deG9QeA3GeCe$eU8:a_eLeNdBdDe#eTeEc(c*bwb6aBdn9;9?a#e4egd=0Qd@f2d#c)1@8=dpeSeCd~cDdWfdf88i9wdhfp8AbFft3yehfbejfodYdec4c6eXey19d5eBe:ef8ifmfGeme3fCdmfrdLe8f3eiekfSe29+f30r2Ge0f!4ea;d/fM6!19e?8?eL6Kffc+6S550d6s6n67f 0d6a1H0(6cg42(2ZbI1@2Y6a1NeY3Z2R0v0P7E0!0o0P0%0u191z1B6;0}e.2Y1V6j2?400n0r0v1q2L6Q1r16791N3xgBgDeG2M0C160(231k1m1ogGb/0mdW8?8m1Y1^0)2o7Ddhgx1O0,008U0$1^b@0rb?1v2e0g7Bcz0i0aej7Jg*0NcH1^0S2e0N0wh5cpcr2E7M0%1qb-0p7s2L0q7q0(cAg(c|0W2Rb/7z0Th41r2`1X7w0~7{c|0Nb}0m00hhc5aP2LcAae0{0$0e0Ncf7Bg:0ihAcs0$b_b,co7u2n0T7HhpcPb^2eci0Tb?aDhF1Eh,0S7`ej0Q0C9x7qh=a,8~gx2=3x1}1+1-1/gf409x2z2B2D0*0T0g17ho7L7Na`356ma 3466f~iabma59q8Kfw8NbtcK0Qbwby0Qb dQd+718Xd#dodid.616Ecd6 fwcc7jbTb#b%b)0NdCeWb-0:b/0jb;h;hob_b^2Rb|h@bzbcc0c2fE0Tc7cU4J5.iV7Rcf2|0icickiZcn0nhcdWhpcucw1Ecy7J7xi+fOc1hxb^buiDcM7q1r100gcRcT4c3xj17ecZdqd;fOeLdwdRfH04c?jDc%jFdbfRiJe~9:9=hWf7f+f9iNfwf-d6f/fxaq0PfYjGeKd_5.0v0:1965fKd7c%e+eHj.c.j-el7TdAi$aRfjapdJfsjId;0:j*fzfZ3uj%8r02gZ0hf@0j192yjWjR8Md9fniOgv9le;e~j+j|3ZjHkefldVfPiK190.f3kakyj!19c@fjeDkqj)kLk8718r0yd|kU5)j:4Fe|j%7Uarf@fyfckzc eof{kZ5.e_eu2.e-k%kQdej`j,8se^dAePeRf.k|3Z7U7{k3kM7ak{dGk?edk+04k~dikufLaNe%f=ink=3xe_k2eXkve:kDf*kpj}f$iMf5jVfWd#kTlAkAjQexd;i{c7fil5kwkRjOfwdcjX8ijTf6lGizk,fAjPlCl$7Vf)kslbfJe/lelsf;a^f?k.f,kHfXkcfBlJ47kmbI7{e^6ya!l`f9lIat8pen6$lqkCjEkEm5e(lhma6Xemk:jGdO0QiImb8.etev9QkOf|itg0gc6kge0D1r0Ib(0}7pcJcL0}7vc70W0$ci0{0N0lb/b/0p0NgD2`0}cH6,f~i51-1 1.2sk019k^fGf}6h3Cc2coe+h+6rm^jOitcihh7Cjs0m0B7zhu7A7p2x25csh3h$iG300$c70i2K1qhR0k1rg)hMad0/c21Dg:0mi,mWcOjai/c5m!7GcS0enI1S3kg2mEgygLgCgE2McA2ocR0g19gK3ZgMnRgGgQ2LgT0Oh611cj2fb%0l0og|m~6tlu1Hn1m!aQi:0Qb%6;g|hbn;2Rfh1U3k1OmG2k2Obc0pb`2G0I1Fnm0i2.nyhK0`hocv0$h+0@1ghWn;hx1^mI0i6Phh1D0:cinE1,cSh+j70Qn:n=itn^m@6tci30n~0Qb}o22Qc+n90ToR1h7q0c1Ai^0N82g-1Pm*3Zi6m-i9aOaQeXj%2.19aV1n0oaY2G0gkolM71a%7jg/1h0jhtb=b@i/0wb{6;hmi@bBjmlO2ilQ6pmBo6ge1c251q0V04mG0:6;2A0ibCpu0ipwb^jqi(bAarb)g|n4dWaD0)cigD160Ib^0$8l0V0Q0Vpz1Eci2|odhu6Rh4161,7`pNja0)gVnS7y7An?6noOiti2nLgd690^0`0|04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)