Arbre binaire

Remarque

On rappelle qu'il existe parfois des variations dans les définitions des structures arborescentes, et que pendant un exercice, il faut suivre celles données dans l'énoncé.

On peut définir un arbre binaire par :

  • Soit un arbre binaire vide (souvent appelé nil).
  • Soit c'est un nœud qui possède une étiquette et deux sous-arbres binaires, un à gauche, un à droite, possiblement vides l'un et/ou l'autre.

Les arbres binaires sont ici modélisés dans Python avec un style POO (Programmation Orientée Objet), et on vous demande de compléter la classe ArbreBinaire pour disposer des méthodes taille et hauteur.

Remarque

Dans cet exercice, la définition de la hauteur de l'arbre binaire vide est 0.

Exemple
graph TD
    A2{N1} --> A1{N2}
    A2     --> N3{N3}
    A1     --> N1{N4}
    A1     --> N2{N5}
    N3 --> x3( )
    N3 --> y3( )
    N2 --> x2( )
    N2 --> y2( )
    N1 --> x1( )
    N1 --> y1( )

Un arbre binaire de hauteur 3 et de taille 5.

###(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 : 10/10
.128013vp5sq3N/(+n0P=g)ul.S_a1kti ox94m2:bfedw,yhAB86c7r050M0L0z0w0A0s0e0B0V0s0w0e0e0o010z0A0c010406050e0r0G0G0w0X0P040u0C0s0r0=0C0l050i0|0~10120`0c04051i1b1l0i1i0`0M0A0b0*0,0.0:0Q0A0p0Q0s1z0Q0z0^050#0J0s0L1u0-0/011y1A1C1A0z1I1K1G0z0X1j0z0Q0*150e0c0w0l0:0H011M1w010K0%0L0l0w0G0L1G1)1+1:1O1?1K1_1{0^0a0B0n0X0C0c0C0e0A180l0B0Z1%0X0X0L0V2g1b1~0l1j0i1#2t1Y1!1Z1H0M200:1C0l1^2d1G1r1t0+1N2D0A2F0l0C2J1G0c2m1j2r2t2X0{1*2h2L1;2Q0X0 0s0^0B0x2q2#0_2!1 2%1O2)2+2-0H2:1+2=2r2C012`0w2,040B0g2~2s0`312^0:34360B0F3a302#323g2-0d3k3c3m3e330C2*352-0U3r2?2$1v2_3w2{370W3B3d3E3f3G3y370T3K3t3M3v3x3h0E3S2@3U3o040x0m3Z3D2M3V3H0x2/1c2;3s3!3,3$0x2}3;2 3?3+2(3O360x393|3b3C3n410^0x3j453l3@403W4a3q4d3~484h3%3A4k473u3_3J4q3L3^493%3R4v3T4x4n0x3Y4B4f3F4n0H3)4d1m2V1b2J2w0M1!2B3u0V2R1|1j4R1k4P2Z4N4X0Z2W4C1;0y0^2^3k4r3U0N2-4=4w2(0V0^0R0X0J2m0S2O0$2m4`4-1O0@040I3r0B5e0B4?3,4/040Z0K574I0:4^375n3 210G0^0v0v2O2f5x5s325a0j5C3u0J5a0e0L0s5m4N4{590^0O3k5g5P3f0^0p0w0r0V0Q0L5G3U0C0^0o5(5i4}040h195%5O580:5a5S4d5U5^330^0!0A0f0r0!0z5?2Z5V015*045,5@5o010y5/5;2F5-1;5`5T5h2(0^0M2a2f672;6p1O6b6d685~6h0^6j6v2 6x5_0^0q5c4k5f6O5}6f5I0^5K5M6l6y0^0t6W5W045Y5!5$6o696z6*5~0l5X5Z5#6G3b6P5f6I016S046U5N6B6f6b6Z6e5t6#6163656?5r6+5+6-6f6/0477641U7a066^5e6`6|6~6!6a6Y7s7g6s0C6u7e757t6c7A3n6r6t663r7m6_695j5l7s5q5g743n0K600e0z0v0b0A0Z7s5E7s7q5L6 6w695a6L5d7n6`5j2m0z0r0X1a5|7p5J7*7s727v600=787k7E3u0C5q0A0e873U6D5:5=7J6O7=6r0L7+6H697Q7v7U040Q5Z667_7$0^5F7S5H7~6V8B3U7.6M2X7K6^8k040A8n2s6Q7B7)8E707B818F3^7V7X7Z7#8Y6m8z7/6N7n8j7M0^7@7_7{2X8R320G0A0^4M8J8-8M5L5K8y5b7:8-7o8/048;7`8d3,8`4a9c1;6b0k9g2_0J0^0 0D938A8V328T8P4,717u8(2_6:6(7a6`8X9s4s0^8u170L8x9z6J040j0q5{8@7}6T7 9N7C739G3#7G7y7I9X9F7,6.9I8v9L0X9q0q0q8i7L6C8l9v6`8q9X0l8s0#0%1K9q7(8D9{7-6K8I3=8 988O9k0:9u809y9!8Z7h7W7Y7!9Da89P8+8~96979_990!8=af019e048}ab7;9891aq5~5aaa3}avaw6f7?az9b7|69aD3:9T7c049jaV5~ah9)aj9+7f9B6=ai049Za,7B7ga10sa39X5E9?a%9xa#aBa)ak9ha+8o9,5k7HaKb0a=b7a-04a_a{b45Qas3B0i4*0L2t2Ubp4Q1s4S2w2z2u0w1Jbs0i4R0`bC0!0$0(04.