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
đ Script 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
đ Console Python>>> taille(a, 'F')
9
>>> taille(a, 'B')
5
>>> taille(a, 'I')
2
Compléter le code ci-dessous
.1280130ldy1,4]k/eibmc:3aPr+ =9o[fgt2;sSh)(punv050d0l0D0s0m0c0G0w0p0c0s0G0G0x010D0m0L010406050G0M0o0o0s0u0e040H0z0c0M0)0z0N050k0:0=0@0_0.0L040519121c0k190.0d0m0O0X0Z0#0%0I0m0C0I0c1q0I0D0,050S0n0c0l1l0!0$011p1r1t1r0D1z1B1x0D0u1a0D0I0X0|0G0L0s0N0%0E011D1n010B0U0l0N0s0o0l1x1W1Y1%1F1*1B1-1/0,0a0w0t0u0z0L0z0G0m0 0N0w0Q1U0u0u0l0p27121=0N1a0k1S2k1P1R1Q1y0d1@0%1t0N1,241x1i1k0Y1E2u0m2w0N0z2A1x0L2d1a2i2k2O0/1X282C1(2H0u0?0c0,0f2h2S0-2R1?2U1F2W2Y0,0E2$1Y2(2i2t012-0s2Z040r2;2j0.2@2+0%2`2|0h2 2k2L0l2k2A2n0d1R2s33010p2I1:1a3d1b2M2)2j38053k0Q2N2S2^0j0,0Q0B380w3r2^0N0B0,0S0U1B3t321m1F0+040K3O3y3i0N0,0@0n2d3V2*3Q0%3S0g3E3G3X0,1B1L3$132%3.3)013S0J0q38060w413F3P2D013A040m3D3@2=433W3`3Y043;1P0l3-441(0z0,0x0x4l4e450G0f0,02030r0y0F4y4A0F3%2T3`3S3~4b30424N4d3(45472d0D0M0u114L044P4H450o0m0,0b3 4N3_4R0,4T4V4X2O4!2^4%2!4s4Q4n0,0v4{4#2V3K0T0c3N4Y4-1(3S3U574m2,3Z0u3#4k5c4t590,3,4Y4@3/043!3?2Q5d3*0,0A4G3H3:0R4j5z3i3S0i5y5j4|1F4_044*5J513R0,0i0J502^4o044 5o585e043L555i5u5k5R3T5E4f5f5h5/453+5V5q5s5*3^5v3{5x5?524h5C5t5}5,5w045H615L4(042#5P2^5G5U4Y0.0k3v3b1d3q0k3o2l3f122o6v0s1A6o6r1j2(6r0R540G04.
# Tests
(insensible Ă la casse)(Ctrl+I)
(Ctrl+Clic pour inverser les colonnes)