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"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
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

.128013f06S:d=4-yr./Noxpg2mcb1w937ve l,8+P5)tiknua(_shq050g0D0M0R0N0F0U0E0v0F0R0U0U0h010M0N0r010406050U0Q0u0u0R0l0k040e0p0F0Q0;0p0P050n0{0}0 110_0r04051h1a1k0n1h0_0g0N0C0)0+0-0/0V0N0s0V0F1y0V0M0@050!0w0F0D1t0,0.011x1z1B1z0M1H1J1F0M0l1i0M0V0)140U0r0R0P0/0t011L1v010b0$0D0P0R0u0D1F1(1*1/1N1=1J1^1`0@0a0E0J0l0p0r0p0U0N170P0E0Y1$0l0l0D0v2f1a1}0P1i0n1!2s1X1Z1Y1G0g1 0/1B0P1@2c1F1q1s0*1M2C0N2E0P0p2I1F0r2l1i2q2s2W0`1)2g2K1:2P0l0~0F0@0E0x2p2!0^2Z1~2$1N2(2*2,0t2/1*2;2q2B012_0R2+040E0A2}2r0_302@0/33350E0i392 2!313f2,0K3j3b3l3d320p2)342,0d3q2=2#1u2^3v2`360B3A3c3D3e3F3x360H3J3s3L3u3w3g0z3R2?3T3n040x0c3Y3C2L3U3G0x2.1b2:3r3Z3+3#0x2|3:2~3=3*2%3N350x383{3a3B3m400@0x3i443k3?3 3V493p4c3}474g3$3z4c1l2U1a2I2v0g1Z2A3t0v2Q1{1i4t1j4r2Y4p4z0Y2V3S3+0O0@2@3j463t0y2,4Q3K3@0v0@0o0p0D0Q0g4V4L1:0?040f3q0E4:0E4R3T4N040Y0b4)4e1N4T364|3~200u0@0T0T2N2e5651314,0S5b3t0w4,0U0D0F4{4p4W4+0@0G3j4=5o2^0@0Z0N0W0Q0Z0M0D5f3T4,5r4c5t4*5v040s0R0Q0v0V5D5n5K0/5G5s4?3@0@0g292e5E3+4,0L4.4j4;5.5J4}0/5h0@5j5l5(1:0p0@0m5`5L0C5X5u0/5|040h625U325w0;5z5B5S2W065/4;5Y1:5?045^5m2Y6301655~5T5;6a5M5O5Q6f2:5:52640@675I6k5L5N5P5R4/6i6D316m6o5 6F046u6q690P5!5$0M686w656H2W6Q3t6!4_6$3q064k3t4^4`6U014 4=6v6E320b0@0!0$1J6{5d6{6/0R770@5+6O4:6J0/4^0N6p6C7h6x7b6I6r0p4 0N0U6(700O4Y044!2E7c4-7f5/7n4^2l0M0Q0l197q690u0N0@3(5-6j6r7I0Z7L7N6,7n7Q497w31650I7)6.730#0F766 5c0@5e7?7.047p6Y6)5}790@6L6A7D0L7-3T7+875Z04747;6B2~7n787`3!0@7}2:7n6t816:0p5%8j5)7d6=7H5!0D7l8g6r6}7972040V5O5C7L7D7_7~707a855,6g5.8y047k8a2%8l8Y1N7s0@7u8#7i7z7B8f2r8h0@8S3;6P6-4@0@7J7Z8*6s0@0j6{7%3$7F8V8{7M8}923/7#7r0@7,7O6w0P0w0@0~0q8M8q8I164$0l9m8u8Z7|6{8p9t6K6z6N9y5V7d5H9b6Z0@9o8K9r9C018i8O3m8!9M9x9P7{5#8s6%9M5*864j1a4I0D2s2T9)4s1r4u2v2y2t0R1I9,0n4t0_9_0Z7:0U04.