taille récursive d'un arbre binaire (2)

Un arbre binaire est soit vide, reprĂ©sentĂ© en Python par la valeur None, soit un nƓud, contenant une Ă©tiquette et deux sous-arbres gauche et droit et reprĂ©sentĂ© par une instance de la classe Noeud donnĂ©e ci-dessous.

🐍 Script Python
class Noeud:
    def __init__(self, etiquette, gauche, droit):
        self.v = etiquette
        self.gauche = gauche
        self.droit = droit

graphe 2024 41.1

L’arbre ci-dessus sera donc implĂ©mentĂ© de la maniĂšre suivante :

🐍 Script Python
a = Noeud(1, Noeud(4, None, None), Noeud(0, None, Noeud(7, None, None)))

Écrire une fonction rĂ©cursive taille prenant en paramĂštre un arbre a et qui renvoie la taille de l’arbre que cette instance implĂ©mente.

Écrire de mĂȘme une fonction rĂ©cursive hauteur prenant en paramĂštre un arbre a et qui renvoie la hauteur de l’arbre que cette instance implĂ©mente.

On considùre que la hauteur d’un arbre vide est -1 et la taille d’un arbre vide est 0.

Exemples

🐍 Console Python
>>> hauteur(a)
2
>>> taille(a)
4
>>> hauteur(None)
-1
>>> taille(None)
0
>>> hauteur(Noeud(1, None, None))
0
>>> taille(Noeud(1, None, None))
1
Compléter le code ci-dessous

###(DĂ©s-)Active le code aprĂšs la ligne # Tests (insensible Ă  la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Ctrl+Clic pour inverser les colonnes)
Entrer ou sortir du mode "plein Ă©cran"
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activĂ©, le texte copiĂ© dans le terminal est joint sur une seule ligne avant d'ĂȘtre copiĂ© dans le presse-papier
Évaluations restantes : 5/5

.1280130ldy1,4-k/weibmc:_35qaPr+ 7=9of.gt286sSh)(pNunxv050d0m0I0w0n0c0M0A0q0c0w0M0M0C010I0n0R010406050M0T0p0p0w0y0e040N0E0c0T0;0E0U050k0{0}0 110_0R04051h1a1k0k1h0_0d0n0W0)0+0-0/0O0n0H0O0c1y0O0I0@050!0o0c0m1t0,0.011x1z1B1z0I1H1J1F0I0y1i0I0O0)140M0R0w0U0/0J011L1v010F0$0m0U0w0p0m1F1(1*1/1N1=1J1^1`0@0a0A0x0y0E0R0E0M0n170U0A0Y1$0y0y0m0q2f1a1}0U1i0k1!2s1X1Z1Y1G0d1 0/1B0U1@2c1F1q1s0*1M2C0n2E0U0E2I1F0R2l1i2q2s2W0`1)2g2K1:2P0y0~0c0@0A0f2p2!0^2Z1~2$1N2(2*2,0J2/1*2;2q2B012_0w2+040A0t2}2r0_302@0/33350A0h392 2!313f2,0u3j3b3l3d320E2)342,0L3q2=2#1u2^3v2`360B3A3c3D3e3F3x360K3J3s3L3u3w3g0D3R2?3T3n040f0b3Y3C2L3U3G0f2.1b2:3r3Z3+3#0f2|3:2~3=3*2%3N350f383{3a3B3m400@0f3i443k3?3 3V493p4c3}474g3$3z4c1l2U1a2I2v0d1Z2A3t0q2Q1{1i4t1j4r2Y4p4z0Y2V3S3+0j0@2@3j0A463t0U0q0@0S0E0m0T0d3j4S3T0?040r3q0A4-4R3K4M0@0Y0F4Q4%3+0F0p0@0s0s2N2e4~4$4:1:4)0Q534L1:0o4)0M0m0c4@4p541N4)0g4^5i3e0@0Z0n0v0T0Z0I0m584e5j0@5l4c4/592^0@0H0w0T0q0O5w5h5E0/5k5m5O324=292e5x3~5z040P4+4j4.5(5D5y0/5b0@5d5f5X310E0@0G5;4T0@0W5R5+015?040C5}5Y5o045q5s5u5M2W065)4.4_5a5c5e5g2Y5n5 5@5_3!5G5I5K6a2:5*646m61633m6q5J5L4,6d6v315-045/6j2:6f1N605^5N5~0U5U0E5W5C6N0/60626X6l6T040d5V0I3q064k3t4N6)0m6L2~6G4T0F0@0!0$1J6o3+56702%0@0w735Z5#6E4-6Y016;0n6@2r6_6p04766$5S0E0l0@0n0M6z6:4V044X2E775P0@5$6b6F7i4;042l0I0T0y197m5~0p0n0@3(5%6e6l6;7I7K7M2W7F1:7P497t3T600z7)3@6|0#0c6 6R6w727?6A7k7z6x6Q6k5S6(5H6C6t2~7c4)0P7-1:7+895F046}7;842r860@577_5`7{8m7*6n8p7.6)6+7|876-7c6;4?8c3e6{040O5I5v7K8w8k7|6(7l7 5~877C3;5(8z7q7g367c8N8C5 7p047r8#0j7v7x8h4K8Q7B7a5)8V7H0Z7Y8#600i7|7%3$8=8@7X7L8#8 3/7!7c8b7N6w0U0o0@0~0V8K048l8P9c0@8G164Z0y9i9k6M6%757|6P8M6B6s9i0P5B989v8F8H9q9s9z8o9l5=8r9N8n6*6V6,8s550@0P884j1a4I0m2s2T9%4s1r4u2v2y2t0w1I9*0k4t0_9@0Z7:0M04.