Aller au contenu

Afficher un arbre binaire en console

Affichage déjà vu

Dans les exercices précédents, vous avez peut-être utilisé l'affichage d'un arbre binaire en console.

Un affichage simple, peut aider à comprendre la structure d'un petit arbre. C'est désormais à vous de créer une fonction d'affichage simple !

Pour simplifier l'exercice, on représente l'arbre de la gauche vers la droite, comme sur l'exemple suivant :

Exemple de dessin simple

📤 Sortie
        11
    75
        8
95
            39
        49
    76
        19

Les nil ne sont pas dessinés.

On peut toutefois comprendre
    la structure de l'arbre !

On tourne juste la tête !
graph LR
    A1("95")
    A2("75")
    A1 --- A2
    A3("76")
    A1 --- A3
    A4("11")
    A2 --- A4
    A5("8")
    A2 --- A5
    A6("49")
    A3 --- A6
    A7("19")
    A3 --- A7
    A8(" ")
    A4 --- A8
    A9(" ")
    A4 --- A9
    B10(" ")
    A5 --- B10
    B11(" ")
    A5 --- B11
    B12("39")
    A6 --- B12
    B13(" ")
    A6 --- B13
    B14(" ")
    A7 --- B14
    B15(" ")
    A7 --- B15
    B16(" ")
    B12 --- B16
    B17(" ")
    B12 --- B17

Exercice

Coder une fonction affiche qui prend ab un arbre binaire en paramètre représenté à l'aide la classe Noeud, ainsi qu'une profondeur p de décalage et qui affiche (avec la fonction print) l'arbre binaire ab comme dans l'exemple précédent.

  • Le sous arbre à gauche est représenté en bas, indenté de 4 espaces par rapport à la racine.
  • Le sous arbre à droite est représenté en haut, indenté de 4 espaces par rapport à la racine.
  • Les nil ne sont pas représentés.
  • La racine est indentées de 4 * p espaces. La valeur par défaut est choisie à p=0.

👍 Les tests secrets acceptent les espaces en trop en fin de ligne, ainsi que les lignes vides en trop. Le reste doit être correctement formaté !

###(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,59/f.78rnb N_o=ylaepcwgu)*vd461z3kAméhtsP(S0+2-i:050E0v0P0u0Y0t0Q0n0x0t0u0Q0Q0r010P0Y0w010406050Q0A0M0M0u0k0s040T0q0t0A0@0q0l050f0~1012140|0w04051k1d1n0f1k0|0E0Y0D0,0.0:0=0O0Y0z0O0t1B0O0P0`050%0m0t0v1w0/0;011A1C1E1C0P1K1M1I0P0k1l0P0O1O1y010g0)0v0l0u0M0v010,170Q0w0u0l0=0W1I1_1{1)1Q1,1M1/1;0`0a0n0R0k0q0w0q0Q0Y1a0l0n0#1@0k0k0v0x2i1d200l1l0f1%2v1!1$1#1J0E220=1E0l1.2f1I1t1v0-1P2F0Y2H0l0q2L1I0w2o1l2t2v2Z0}1`2j2N1*2S0k110t0`0n0H2s2%0{2$212)1Q2+2-2/0W2=1{2@2t2E012|0u2.040n0J302u0|332`0=36380n0F3c322%343i2/0d3m3e3o3g350q2,372/0G3t2^2(1x2{3y2}390i3D3f3G3h3I3A390j3M3v3O3x3z3j0e3U2_3W3q040H0U3#3F2O3X3J0H2;1e2?1o2X1d2L2y0E1$2D3w0x2T1=1l3{1m3_2#3?3105410#2Y3V3.0K0`0#0g3m3E340y2/4l3N3.0l0g0`0u0g1,0x0O0v0p0O3y0Y0I1b0%0t4q4f1*0_040S4K3$4s4v0m4Q3-4M0`0c3m0n4m3w0l0`0w4V340q0`0r4+3w0M0Y0`3+492u4$3W4N0B0Z3,4n2/0n534:3W0Q0E0`015a503w5752530L4x0Y4z1N0u0m0n1.0n0M420n0P0v0b5u0n2g0M0w1M1;0l0P5c565839530n5m5y0v0k0u0n2Q0#5E0N2k1N0F0C0w5o200x0v0Q5G3.5e5J531M0+0Q0q0A0Q0X120m2o5:4H5R0l5T0P0N0+2l0F5#1`5%5:0A0w5B0N5D0%0Y5{5*1*5,5K0n5a013t6l4{4g0`0Y4k4_396r2*4T4!6y1Q0q4o040Y5)6w4#4r1*6E0`2S5F6J6C0=0K0x0`0o1b0v553.4N4 6w066l6q6L2{4v5i5k4C4E4G5E376!4X4O6_6-045m6|0=4-040h70354i2c2h6Z6w6S014N4Z6R6,3h4)6B7h01720V7k4L1Q4=0`3=2#7l4}6p6*547l0l0m4)0k2Q6Q7v7q0=4N4P7b7l0Q1~041?6o7g7J7m0`0C7p4R6`7M7I7!7r4?043l7U7(717X7Z4W6}4*7N7V4}7f2Z6K7V4(041.0E75724/7-7=0=7P597T7%877d0`0B7y7z7c7C7E7G757L757 6 7^7.7W738p0`0D370v0A0k8n8f8h6*8j6.4y4A6;7F6?4I8D6{8s8d8q4U8R4,0`748V4%0`0z0u0A5k8P7{2?7}8t7 7@7|7c7n7;347s3)8P8g6(1d4c0v2v2W903`1u3|2y2B2w5m1M2v3{0|0f0#6f0*04.