Aller au contenu

Nombre d'occurrences d'un élément dans un ABR

Nombre d'occurrences

graph TB
    A1("5")
    A2("2")
    A1 --- A2
    A3("8")
    A1 --- A3
    A4("2")
    A2 --- A4
    A5("4")
    A2 --- A5
    A6("8")
    A3 --- A6
    A7("9")
    A3 --- A7
    A8("2")
    A4 --- A8
    A9(" ")
    A4 --- A9
    B10(" ")
    A5 --- B10
    B11(" ")
    A5 --- B11
    B12(" ")
    A6 --- B12
    B13(" ")
    A6 --- B13
    B14(" ")
    A7 --- B14
    B15(" ")
    A7 --- B15
    B16(" ")
    A8 --- B16
    B17(" ")
    A8 --- B17

Dans cet ABR

  • le 5 est présent 1 fois,
  • le 2 est présent 3 fois,
  • le 4 est présent 1 fois,
  • le 8 est présent 2 fois,
  • le 9 est présent 1 fois,
  • le 1 est présent 0 fois,
  • le 10 est présent 0 fois,
  • le 7 est présent 0 fois.

⚠ Pour chercher le nombre d'occurrences de 8, en partant de la racine 5, on sait qu'il est inutile de chercher dans le sous-arbre à gauche...

Exercice

Coder une méthode nb_occurrences de la classe ABR qui prend un élément potentiel x et qui renvoie le nombre d'occurrences de x dans la structure.

Une classe minimaliste est déjà donnée, il suffit de la compléter.

⚠ Cette classe accepte les doublons dans le sous-arbre à gauche. C'est un choix possible. (Et ce sera le seul exercice ici qui fera ce choix !)

###(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 : /
.128013x/.r;nbylaeêu)dV63m(P+02-,59f!78 _o=pcwgv41kRéhtsSàCji:050p0l0W0k0$0j0X0H0M0j0k0X0X0K010W0$0L010406050X0n0t0t0k0e0i040Y0J0j0n0{0J0g050c12141618100L04051o1h1r0c1o100p0$0P0:0=0@0_0V0$0O0V0j1F0V0W0~050+0h0j0l1A0?0^011E1G1I1G0W1O1Q1M0W0e1p0W0V1S1C010D0-0l0g0k0t0l010:1b0X0L0k0g0_0y1M1}1 1-1U1:1Q1?1^0~0a0H0v0e0J0L0J0X0$1e0g0H0)1{0e0e0l0M2m1h240g1p0c1+2z1(1*1)1N0p260_1I0g1=2j1M1x1z0;1T2J0$2L0g0J2P1M0L2s1p2x2z2%111~2n2R1.2W0e150j0~0H0R2w2+0 2*252-1U2/2;2?0y2_1 2{2x2I01300k2=040H0s342y10372~0_3a3c0H0Q3g362+383m2?0B3q3i3s3k390J2:3b2?0r3x2|2,1B2 3C313d0F3H3j3K3l3M3E3d0G3Q3z3S3B3D3n0C3Y2}3!3u040R0x3)3J2S3#3N0R2^1i2`3y3*3=3,0R333`353|3;2.3U3c0R3f423h3I3t470~0R3p4b3r3}463$4g3w4j1s2#1h2P2C0p1*2H3A0M2X1_1p4u1q4s2)4q4A0)2$3Z3=0S0~0)0D3q4d3A0N2?4S3R3~0D0~0g0h0I0J0M0M0n2r1=0M0l0X4X4M1.0}040u4=4l1U0h4^0X0l0j4R4q4Y4@0~0A3q0H4T3+0~0b4{451U4^0o595b3=0J0~0z020O0W0f5k552 0h0~2U0W5f384^0%3:384V3d0H5J5B3A0X0p0~015Q5F5M5O5I5J0T1=0P0J0$1R1Q0H2W0t0h2s2o004)4+4-0g4/0/2p0b2o1 0/0=0H0X1(0n2u4,0l5S3!5N2?5J0H0c0E090H0q0l0e2k1f0H2i4,2o0J0n1P1f0/0Z0H0O0k610V1R0E653=675V0H5Q013x695a5v0_4O040$532%6K4?4}4 516Q2`5l1.5n040d5L5c044:0W0I0P0$0)6(3=4^0u0o5E4j066J6J6Z1U6N2s0W4,1g4j6S4|0_0t0$0~3/6`6}6L016N516P5u6T3l5d7k77016#020j5s7o5g0_4~0~50526;6!0~6%547l390~0P3b0l4,7C5h0~6_2%6{6|5K7f700*737v387y047A6X356~0_6#7F2)7f0g0~6v6x647G7p7-7O7m044$4(4*4,2s5=4:7|016?867;045e7_7w870~5j7d697+7g0~7i7)2y768e8a8c6R8k7r5r5t758k7$7(867{8d3t7J7L7N8F3A5D6I7U8q387X720e748u7f8B6W8D7E894P2g2l7^7/7H8E8*7p8a7 5/824.858K3!888^3~7n8{56048h7S7e7H7h0.8)6Y7f8M8i7U8k0M0R0~030H0!0?5-0U6v1I0W0U0A6n5=2o0U0#6t0R0H8;5;4/589b6|9d9f049h150$0/5_0L7M0W0H6w0@0$0H0m1(1R6t7?0M6y6k1c2k7M6h0H0D5!4;9E937p8R7Z8z7f794g7!3A6#0w9|3!8X7B8~1U8,987H8a9!6y8Z6$8#7~4%9A835?868`8-8r8}am5C8g3H0c4J0l2z2!av4t1y4v2C2F2A0k1Pay0c4u10aI0*0,0.04.