taille récursive d'un arbre binaire (1)
Dans cet exercice, un arbre binaire de caractères est stocké sous la forme d’un
dictionnaire où les clefs sont les caractères des nœuds de l’arbre et les valeurs, pour
chaque clef, la liste des caractères des fils gauche et droit du nœud.
On utilise la valeur ''
pour représenter un fils vide.
Par exemple, l’arbre

est stocké dans
Pythona = {'F':['B','G'], 'B':['A','D'], 'A':['',''], 'D':['C','E'], \
'C':['',''], 'E':['',''], 'G':['','I'], 'I':['','H'], \
'H':['','']}
Écrire une fonction récursive taille
prenant en paramètres un arbre binaire arbre
non vide
représenté par un dictionnaire comme vu ci-dessus et un caractère lettre
. La fonction doit renvoyer la taille
de l'arbre, ou du sous arbre de arbre
de sommet lettre
.
On observe que, par exemple, arbre[lettre][0]
, respectivement
arbre[lettre][1]
, permet d’atteindre la clé du sous-arbre gauche, respectivement
droit, de l’arbre arbre
de sommet lettre
.
Exemple
Python Console Session>>> taille(a, 'F')
9
>>> taille(a, 'B')
5
>>> taille(a, 'I')
2
Compléter le code ci-dessous
.128013l(9 _4:;=vm2-uSws3/]+frgebh[pPic0a,onkyd1)t050O0z0R0I0F0b0r0e0G0b0I0r0r0j010R0F0D010406050r0o0l0l0I0x0N040p0K0b0o0,0K0L050t0?0^0`0|0;0D04051c151f0t1c0;0O0F0k0!0$0(0*0$0L0y0o0I0y0z0n0D0N0R0B130e0B0F0y0B0b1H0B0R0/050V0A0b0z1o0%0)011G1I1K1I0R1Q1S1O0R0x1d1C0!0 0r0D0I0L0*0m011U1q010w0X0z0L0I0l0z1O1:1=1`1W1}1S20220/0a0e0E0x0K0D0K0r0F120L0e0T1.0x0x0z0G2n15250L1d0t1C2A1*1,1+1P0O271r0F0L1 2k1O1l1n0#1V2K2M0L0K2Q1O0D2t1d2y2A2%0=1;2o2S1{2W0x0_0b1O0I1F2t0w0*030f0f0G2X0z1K2V0K0n0m0n0P0/0P150I2(2+0:2*262-1W2/2;2?2^0z2`012|2~30322N35350/0m3b3d1=3f2y2J013k0I2=1d2@0B2_2{2}2 0T3u2W3w0s0/0s3A2x3e0;3E3i0*3H3J053L3N3q3P3t2L3v360g0/0g3Y163e1g2#152Q2D0O1,2I3%013Q231d401e3~2)3{3C05472$2+0e0F0O0*2}2y3w383K4k4m013/3R3;3T36380e2b0z4n3s4x334q1O0t3c3g2,1p1W0M0/0T0w3Z4f3$4P0*0q0/0e4V2z4N3F0L0w0/0V0X1S4%4i3h4Y010.040c4;4)450L0/0`0A2t4|4X2T4^0/0J4;4$552.0/1S1$534e4(5c1W4_0Q0h4;0;5i4=2o4l4F4p361^4s5u4v4G314y345x1_4D4F473S5F3x2A3c0e5Q5b4j454R040F4U5r5S4?564 045f1*0z5a4}4@0K0/0j0j5,5k0*0r4r02030s0d0i5{5}0i545T4@4_5o5r5q2)3E5A4o2+3U3m6c5C5L6f4C214E5B5K5E6f5O045R6u5!4O565V2t0R0o0x145Z5-560l0F0/0H5p63266h5w0n3@5z4u4w5D4I3?5H6m5J3:6X6R4K5P5R6G1{6z0U6C6E2%6w3F6I395?64565/040v6`5#5d044.0b4:5r6,5l0/4{775@3G500x525+7c6{1{4_596F7d5%515h6a7k79040C6N6x725)7s3|7d4_0u7x7j711W6^046L7I7z7v0u0Q707P0*6}6 7o7u3(4-0W757i7t7J0*4_7b7)7U7e047r7(7D7Z57047n6=787!7;7g7C4W7^4_7H7.4*5e0U5*7y3F7F857@7*017L3a7O8c0/7R6M770t4h3}0z2A4a2B42152E8y0I1R8t3 1m3f0t0T740r04.
# Tests
(insensible Ă la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)