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
.128013f:0Sd=4yr/opg2mcb1w93ve[ l,+P)ti]kn;ua(sh050f0x0F0M0G0A0O0z0q0A0M0O0O0g010F0G0m010406050O0L0p0p0M0j0i040e0l0A0L0*0l0J050k0;0?0^0`0/0m04051a131d0k1a0/0f0G0w0Y0!0$0(0P0G0n0P0A1r0P0F0-050T0r0A0x1m0#0%011q1s1u1s0F1A1C1y0F0j1b0F0P0Y0}0O0m0M0J0(0o011E1o010b0V0x0J0M0p0x1y1X1Z1(1G1+1C1.1:0-0a0z0D0j0l0m0l0O0G100J0z0R1V0j0j0x0q28131?0J1b0k1T2l1Q1S1R1z0f1^0(1u0J1-251y1j1l0Z1F2v0G2x0J0l2B1y0m2e1b2j2l2P0:1Y292D1)2I0j0@0A0-0s2i2T0.2S1@2V1G2X2Z0-0o2%1Z2)2j2u012.0M2!040v2=2k0/2^2,0(2{2}0h302l2M0x2l2B2o0f1S2t34010q2J1;1b3e1c2N2*2k39053l0R2O2T2_0I0-0R0b3u331n1G0t0-0z3F3z3j0J0b0-0T0V1C3M2+3H0(0,040N3V2U3X2`0-0^0r2e3$2_3Z0B393L3G2E3)041C1M3-142(3s3/0-0E0c39060z473?3N3(3B040G3E3~2?493W3^0J0-3{1Q0x3=403j0l0-0g0g4q3@1)0O0s0-02030v0u0K4D4F0K3.3j3Z444g31484R4i3%3^4c2e0F0L0j124P044T2_0p0G0-0d454R4r4b0-4X4Z4#2P4(3j4*2#4x4a3^4t040C4~4j2W3R0U0A3U4$4:3^3Z3#5b4y2-3*0j3,4p5g4 1)3:544U56043+3}2R5h3Y0-0y4L3(4l3`0S4o5C5d0-0H5B5n551G4|044-5N5s1G3Z0H0E5r2_51534$4`5D573T5m5x5o5V0-5f5-5O355j5l5I5p0-3;5%5c5t5v5,3 5y013Z5M5=5U5@5F3|622?5 5/045L5`5P4+042$5T416h5Y4$0/0k3w3c1e3r0k3p2m3g132p6D0M1B6w6z1k2)6z0S580O04.
# Tests
(insensible Ă la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)