Aller au contenu

Ajout d'une feuille à un arbre

😀 On considère ici des arbres non étiquetés et ordonnés.

Ajouter une feuille à un nœud

graph TB
    N0( )
    N0 --> |0|N1( )
    N0 --> |1|N2( )
    N0 --> |2|N3( )
    N1 --> |0|N4( )
    N2 --> |0|N5( )
    N2 --> |1|N6( )
    N3 --> |0|N7( )
    N3 --> |1|N10( )
    N5 --> |0|N8( )
    N7 --> |0|N9( )

En considérant l'arbre dessiné ci-dessus, on montre plusieurs exemples d'ajout d'une feuille à droite des enfants (éventuels) d'un nœud indiqué avec la notation de Neveu.

graph TB
    N0( )
    N0 --> N1( )
    N0 --> N2( )
    N0 --> N3( )
    N0 --> N3b{ }
    N1 --> N4( )
    N2 --> N5( )
    N2 --> N6( )
    N3 --> N7( )
    N3 --> N10( )
    N5 --> N8( )
    N7 --> N9( )

Une feuille est ajoutée à droite des enfants de la racine.

graph TB
    N0( )
    N0 --> |0|N1( )
    N0 --> N2( )
    N0 --> N3( )
    N1 --> N4( )
    N1 --> N4b{ }
    N2 --> N5( )
    N2 --> N6( )
    N3 --> N7( )
    N3 --> N10( )
    N5 --> N8( )
    N7 --> N9( )

Une feuille est ajoutée à droite des enfants du sous-arbre d'indice 0 issu de la racine.

graph TB
    N0( )
    N0 --> N1( )
    N0 --> |1|N2( )
    N0 --> N3( )
    N1 --> N4( )
    N2 --> |0|N5( )
    N2 --> N6( )
    N3 --> N7( )
    N3 --> N10( )
    N5 --> |0|N8( )
    N7 --> N9( )
    N8 --> M{ }
Une feuille est créée comme seul enfant du nœud de filiation [0, 0, 1].

Exercice

Coder une fonction ajout_feuille qui prend un arbre non étiqueté en paramètre et une filiation avec la notation de Neveu et qui renvoie un nouvel arbre de même structure, mais avec une feuille en plus à la suite des enfants du nœud indiqué par la filiation.

Indice

Il sera utile d'adapter le code de la fonction de copie profonde d'un arbre.

###(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 : /
.339.128013],59/f.q!78rnb N_o=ylaeêpcwgu)vd4613kRméhtsP(S0à2j[i:050H0y0R0x0#0w0S0q0B0w0x0S0S0u010R0#0A010406050S0E0O0O0x0n0v040V0t0w0E0`0t0o050g111315170 0A04051n1g1q0g1n0 0H0#0G0/0;0?0^0Q0#0D0Q0w1E0Q0R0}050*0p0w0y1z0=0@011D1F1H1F0R1N1P1L0R0n1o0R0Q1R1B010h0,0y0o0x0O0y010/1a0S0A0x0o0^0Y1L1|1~1,1T1/1P1=1@0}0b0q0T0n0t0A0t0S0#1d0o0q0(1`0n0n0y0B2l1g230o1o0g1*2y1%1)1(1M0H250^1H0o1;2i1L1w1y0:1S2I0#2K0o0t2O1L0A2r1o2w2y2$101}2m2Q1-2V0n140w0}0q0K2v2*0~2)242,1T2.2:2=0Y2^1~2`2w2H012 0x2;040q0L332x0 362}0^393b0q0I3f352*373l2=0e3p3h3r3j380t2/3a2=0J3w2{2+1A2~3B303c0l3G3i3J3k3L3D3c0m3P3y3R3A3C3m0f3X2|3Z3t040K0W3(3I2R3!3M0K2@1h2_3x3)3;3+0K323_343{3:2-3T3b0K3e413g3H3s460}0K3o4a3q3|453#4f3v4i434d4m3,3F4p4c3z3~3O4v3Q3}4e3,3W4A3Y4C4s0K3%4G4k3K4s0Y3.4M444O3M0Y3^2$4q4x4D0Y404Y4w3*4#494(4B4l4V4h4-4H4/3U0Y4o4=4N3S4P4u4{4T4}4V4z2(1t2!1g2O2B0H1)2G3z0B2W1^1o591p57552(5f0(2#4?1T0M0}0(0h3p4)3;0C2=5x4.2~0h0}0x0Z0t1c0y0s0h0y0E0,1P5C5r0^0|040U5S4|385G0n0p2r5Y51015V0d3p0q5y2-0}270#0x2u4i5:1T5V0F0$3/375A3c0q645)370S0H0}016b0N1;0G0t0#1Q0E2m2V0E0G0y0w0q155%1Q2V2m0P0`0j0E0)0P0d2n1Q0O0z1@0q0S1%0E2t0E5(4S676963640x6n0B0q6j1Q5N5P0w1P0q1;0q0A1b0S6C0X2n2f2k1Q0(0.1;0h1~0R0.0P6n0o0R6z0-2n0E0q0o0a0E0H603z682=640q2T1w6y0P6*150q0;0q5?5^0#1e6X0`1H0S6{7n0x760t0*2l6D0q0r0y6n0E0i7b3Z7d6S0q6b013w067f5/5D0^5t045v663z625/5`7X385F045f0A6h7$3Z5V5X7*5T5!046r6O2(7+5}5 4p7V7V5{0^0S2104016d0o6f6h6X6k5J6n6p7}6t7t6w0#6y6A6C7x1`7:1Q2Z0t0h1e0(7S8384657+0o0}6_6{0S5.86010t0}0u8M8G5#6s3w8E8F7`7Z2r710n1f4i7W7`5V0!8W8X858T7.2g7;7_5Z7@7=3}0}0S5J0S0s8l8{1-5}8S8Z5=3B965Z8H048~0E90928)8N0t622T9a5*9c8J708L8D8E8N5V0c7T7U7f8N9p0o6`9r9n378P048R9i8;9h4Y8:97040#5w9L7`9c7q5_2$8*5Z9I0u9K9Z9v0}0!0c829O8X9B0}6l8j915$7~2_9!5*9$9G3z8,932~0}7/8@7 8+0}7^a79b8}8 9^8V8^5*959U5Z7Z8z0n9 3*ad9faf9`349|9H9l8(9)8;9q6|a25U0}9x9t849;049?6oat0yaE8O0}7Lah3s5G0A0A1;7aaUa0a99,0F8.8Yal8I0-aPa#7?0}9.3`8/aKaM0waOap3;9~akai9+aH9/9u8;0#915I1ca}1-a aA9V5=0,5@9Y2_9jaSaQ9c2h0AaQ7@a)aI9Pa,04anbba39Rbz0^9k0}9mb03s0p0}0n1~0Da/abb15WbnbJ0428bra9bn8I9D8KbW040F5~a*8/aw3z7Z9SbC7{0#b:9I0k9(9{aKb75H5J0Rb$a?42b+9:8;a`a|a:a~bmc85;7|aXaZb$aabk8;a5bOcia8bRcbbAaC9sbP37a1cp3kbFb$0cb(b*a^7+7Z6o0Scl349*04c13gc3b5bfaL8iaN9Ncm9#cact4xaWaY0oa!cYa;coc(8|7|b90R5L6!5QcI2xcKchcJaBb!9Fcw5+9+bYbBc~9w5-bHcZbxbh7r1eb$cBaI8N8!0)6Nazb`c5cSa{cU421g5o0y2y2Zds581x5a2B2E2z0x1Odv0g590 dF0)0+0-04.