Expression arithmétique et arbre binaire

Une expression arithmétique ne comportant que les quatre opérations \(+, - , ×, ÷\) peut être représentée sous forme d'arbre. La disposition des nœuds indique les priorités opératoires.

  • Les feuilles représentent des nombres, elles ne possèdent pas de sous-arbre.
  • Les nœuds internes représentent des opérateurs binaires, ils possèdent exactement deux sous arbres.

Par exemple, avec un parcours en profondeur infixe de l'arbre ci-dessous, on peut retrouver l'expression notée habituellement : \(((3 × (8 + 7)) - (2 + 1))\).

(3*(8+7))-(2+1)

La classe Expr ci-après permet d’implémenter une structure d’arbre binaire pour représenter de telles expressions.

Compléter la méthode récursive infixe qui renvoie une chaîne de caractères contenant des parenthèses représentant l’expression arithmétique sur laquelle on l’applique.

Exemples

>>> a = Expr(Expr(None, 1, None), '+', Expr(None, 2, None))
>>> a.infixe()
'(1+2)'
>>> b = Expr(Expr(Expr(None, 1, None), '+', Expr(None, 2, None)), '*', Expr(Expr(None, 3, None), 
'+', Expr(None, 4, None)))
>>> b.infixe()
'((1+2)*(3+4))'
>>> e = Expr(Expr(Expr(None, 3, None), '*', Expr(Expr(None, 8, None), '+', Expr(None, 7, None))),
'-', Expr(Expr(None, 2, None), '+', Expr(None, 1, None)))
>>> e.infixe()
'((3*(8+7))-(2+1))'
###(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
.128013witkcvN8o-)yl0bxpq_.P3(a;j+gE=/mT4rse97Sf,dè 612:C5nuéh050R0L0d0y0c0n0K0T0f0n0y0K0K0E010d0c0r010406050K0#0G0G0y0J0m040O0j0n0#0{0j0!050F12141618100r04051o1h1r0F1o100R0c0g0:0=0@0_0=0!0C0#0y0C0L0k0r0m0d0%1f0T0%0c0C0%0n1T0%0d0~050+0p0n0L1A0?0^011S1U1W1U0d1$1(1!0d0J1p1O0:1b0K0r0y0!0_0W011*1C010P0-0L0!0y0G0L1!1 21261,291(2c2e0~0a0T0v0J0j0r0j0K0c1e0!0T0)1}0J0J0L0f2z1h2h0!1p0F1O2M1_1{1`1#0R2j1D0c0!2b2w1!1x1z0;1+2W2Y0!0j2$1!0r2F1p2K2M2?11202A2(272,0J150n1!0y1R2F0P0_030t0t0f2-0L1W2+0j0k0V3h0~0T0V1h0y2@2`0 2_2i2|1,2~3032340L3601383a3c3e2Z3h0k24040T0W3n3p213r2K2V013w0y311p330%3537393b0)3G2,3I0w3k0w3O2J3q103S3u0_3V3X053Z3#3C3%3F2X3H3i0I3k0I3:1i3=3s2{1B3v0j2 3W3y3!3A3$3E3)423+3i0Z3k0Z482?3?2`3T3`4i3~3D3(3d4o3g3i0U3k0U4u4a3@4d3_4f3x3Y3z3B4C413f3I0N3k0N4L3Q4w3t4O3U4Q4h4S4j4U404n4X3i0i3k0i4$2L4(4c2)4+4g3{3}4k3 4m4E4?0k0M3k0M4{3R4x3^504R3|4T4l4D3*4G3h0o0~0V0o5d4}4y4,525k555m4F3I0V0V5r3m0F3o3;4%4b5w514A544V4=433h3K0V3N5I3P4|5M5g4z4.4B4;575T0V3-045-5u5#4*5%5j4/5l4W5,455/475Y5K5!4N4 5@534:565n5D4r5/4t60495L632}5x5P675B580V4I5/4K6e4v5=646j5(5Q5*693i0V4Z5/4#6s4M5f5?6w5^5)685C6B4^5/4`6G6g6I6v5O6x6l5{4p3h5a5/5c6T626V6i6X6L6y6N580W5q046?5;6h4e6.665`5S6#0W5F6^5H5J6f6+4)6W5i6~5A6!5o0W3K7g6`6,6|7b5z5R5+715.0W3/6*5e796-7m5_7d707f5}0W5 766t6{4P6}7n6z6O3J6b0W6d7G6H7w7l4-6/6Z7B3I0W6p7#7j7U7J7y6M6m5T0W6D7/5d1s2;1h2$2P0R1{2U5g4D2#1y1p2:0L2=3q611p4D852i0c0R0_392K5D3y8c8e6;5,252n0L8k7-6#733:7I010e0~3u876u270b3k8A8v0!0f0~0D0q2:8F7k0_0}040X8710778a2A8j018f2`7!8i8d8Z8l718n2d8p8)8r7f1!608v8D3L0T8`8N7)010K0R0~020s0#0j0d0z92949698950z0Y4d1)0c0G0r0n0$2e0!0+9n0T0#2A160p2F2B02030w0M0z0L8L2F0@0c1f0u9b9a939c9J0z8T8|8X8(8!213,8%8q7e9V0T8o9X7Z3i5.3O8U2^3S8Y9T0!3I5}5j9.8*5o459!8-9$7p9_8=3o8`8{8v8x040)0P9Q3T8^0Ta95g0P0G0~392X2y39ad4*8Q0xam4 0p8Q0K3da88V8B1,8Q0Q87ac8G0~0Caq27aAaCay3_0~0gaHaz0~aB8VaD8O3U0~0RaP8P0~0l8S8V9+869-9S0t8g4q9W8/9Ya/9{2e9}6A0k6b8uaVaba2b0aZ8~90049Nb69L969r0T0j0p0A0*0T8K2:0T2v0@0S2C0w0T0y1=0J0c0p1d0/a%6taxa+8ka.0k6p9?a,8:3I4Ia@8.7M58bE8?aV8 3kb0a20k0T0C0y0#0f0%1)0X0T0=0T0K0j0#0K0k9C839F1QbXbZb#0T9Oa(a99@bC6DbFa_7N4ZbKc258c0bP8}bR8_bT0TbV0g3W0L0#0J0Tb%b)cg1(cj2B1)0n9x9z0z0$0{930*0d0L0Qbb0r0$0J212Cb,9!0j0G9u1)b{by9,4xb~8#4@a:bM5T4^c5a;9%0k6Qa}cab4cd8`bV0R2t2yb$b(33b+b-b/9D0Lb=2Ac:0jc=9Ib897d49N9PbzcTa,bC6%c1c$9~3I5ac#cY6#dd5Yc-aU8}as0~au0nawcS8}0j0~0ub20!aFbYb!0LaK8vdy040EdHaVdC04aGb|d98bdbcV5pcX9^5D5qdjdY6B6@3OdoaL01dr04dtdva*aVdJdAdS4~2}aNchcjdMdx0~dLaTd+dOaOdRdw9RbBdV5EdXbH6B5Fd#ed3h8tdnc-d+d-d/b2d?dBaXc;cBd~d_1,dJe12?dpewaMa6d8e70TcU9U6B3Kdedk5o5W8,a^dfa`eP2M3oa)3Q5MeI9:6B9)339@eh5-eQbLd$3h9)eka3aVa5a7b2abdB0P0~c}0d0t9r0L0t0Pci0-1(b2aob2enavf8a#bx4ad^eHdUeJ3h9=e(bGa=fle,c65|a08WaabScdb2cbb799d5fC2F0!0gd11)0H0J0#1)2x0Tbfau0#1(9m0dace6d;dTe9fk0Va|fnfs8s4regfpf$fud+cbdofO1(cLci2Ue~9q2Y0Tf40#f60LfB9Md4eFfYe88)bC6oecf-bJ9#eS7NgbeVccbTd+a52F0dcj1ge28vfbduepdzerdPdEb#ev3T0j8^0c0KgC5g0e8I040h1fdGgsd=8^cIgI4*gud:eYdIgxfh5$esd1eugQdxgFgHg*eC8wgLgN2Yg6gYdaf!e#3hc0f(gg6nc4gfeN5Dc8eWb}fjg{0Vc)g~h36Pfrg 5,c)e;eB3Te@3Ae_8Eg#5?e|042X290qgPeG5gf9hqaratfchBaIfeg@2LeZh85Dddhce.0Vdih2hPdm5J8@fxglhF1,fAd6h$fE2bfH0ccs332F2:0$au9nbq9G8X0!hv1)2Cct9y9Ab:9E2x1Q2bhIfve!7!d(hOeh6?hfhd3Jd(c9g/f;c-b!0,f}2C0f160y2H0S9Eg39KfCi5hKg`7!8tiafp72ide.iFgjd*aEd.gU4 eyiN270K73cu9AiUcQ3q0TeXhJbAg9dV7ggcc%i)f,i+eLhjb1a40~0cgX2Lhk5ggWgw04d@hy5?dDb^hxiYd+gEi?g-eAj68^2,0diQ1,gK0~g=j4g^8}8Qff5Lfhi73i7si*dgjs3-i-jv3Je:a1doa2e3dsjf0_iPg.3TiS91h~0z0xiWjH01dJ0BjSdOj9j5gZ04jVjKi{hDgvhZjIg!j064j2dFi}i g74yi?h_0chwfd040x0laCi!i6hLjsfmfif)7CiGib9=i:jEiLjY3Qi`4*jJjakfjSjUjW0pds1_j}apj+d,j)i^fv5geqkve4d|0Jj}k0aTk2izi%fk7Qjua`kNjykPa|kde=8}a5i@jSi|kvkBj.d`a6etjki_jbj8knjc95jSjhgMgOj}joi_kJi$9/7!bEiDi+ge9|hg71bOjCjDkij/iMj%kje0jWjGldiO0~j$klaVk!k%exj-j@g$k)g(k+kzlei~gyhuj{lwd+aokHlmd j#jSjMb5jO0ljRkIh7iAjsg}k7l57fh1l4ie7/fuiKe?0~gogqlglccR860F897?847^811h0d7{l_2S2N0y1%l?0F7_8U0)0+0-0K04.