From 11b25b75d271e1d228cacfbf3ac04111694e23e3 Mon Sep 17 00:00:00 2001 From: Thomas Rauh Desktop Date: Sun, 23 Nov 2025 00:45:24 +0100 Subject: [PATCH] clearTree + Test --- Start_Windows/bintree.c | 12 ++++++++++++ Start_Windows/bintree.o | Bin 2089 -> 2209 bytes Start_Windows/bintreeTests.c | 19 +++++++++++++++++++ Start_Windows/runBintreeTests.exe | Bin 79440 -> 79984 bytes 4 files changed, 31 insertions(+) diff --git a/Start_Windows/bintree.c b/Start_Windows/bintree.c index b2230e1..5a21a80 100644 --- a/Start_Windows/bintree.c +++ b/Start_Windows/bintree.c @@ -96,7 +96,19 @@ void *nextTreeData(TreeNode *root) // Releases all memory resources (including data copies). void clearTree(TreeNode *root) { + if (root == NULL) { + return; + } + clearTree(root->left); + clearTree(root->right); + + if (root->data != NULL) { + free(root->data); + root->data = NULL; + } + + free(root); } // Returns the number of entries in the tree given by root. diff --git a/Start_Windows/bintree.o b/Start_Windows/bintree.o index 2b6e0156c8bf76705ec005fd0f1b5a464e367faf..30aaf7bfd5be07628abad4be4379600e0a04ef52 100644 GIT binary patch delta 301 zcmZ1}uuzaIrHzdN1d7-ua!CmWFf%Z)Fao)(U_l1SiKgjnIzV;^%fv-$tPLy-48JCx zRc73<@#8b5`sOzZ9-Y1d9?i7^3?(5R-L3*2-3}Zcod;js{r~?zlrI3{pM~=oJX#Nw zNI~QnKvE!!z}(|tE5S^t@N32i9?eG-Vh@LUbUp>yG$Hoz1Q=lCnEZ`doSTE0mBWaI znK6KYVX_E|il7b92NFP&K(sp$t8DgUv1H_z05ZjZ!YmB>AlBwuR#8SpkQzn?1qLPt gy^_?560rRs5e5ckMvz{~$(z~I8Fe;Gv-2?m0A~tKg8%>k delta 141 zcmZ1|xKe;CrHzdN1b(qjOV diff --git a/Start_Windows/bintreeTests.c b/Start_Windows/bintreeTests.c index d779d3a..35febed 100644 --- a/Start_Windows/bintreeTests.c +++ b/Start_Windows/bintreeTests.c @@ -73,6 +73,23 @@ static void testNextTreeDataInorderTraversal(){ } +static void testClearTree() { + TreeNode *root = NULL; + int values[] = {10, 5, 15}; + int i; + + for(i = 0; i < 3; i++) { + root = addToTree(root, &values[i], sizeof(int), compareInt, NULL); + } + + TEST_ASSERT_NOT_NULL(root); + + clearTree(root); + root = NULL; + + TEST_ASSERT_NULL(root); +} + void setUp(void){ } @@ -89,6 +106,8 @@ int main(){ RUN_TEST(testAddToTreeNewRoot); RUN_TEST(testAddToTreeToExistingRoot); RUN_TEST(testAddToTreeNoData); + RUN_TEST(testNextTreeDataInorderTraversal); + RUN_TEST(testClearTree); return UNITY_END(); } \ No newline at end of file diff --git a/Start_Windows/runBintreeTests.exe b/Start_Windows/runBintreeTests.exe index 2a470c3b04825d96fe82b701f69d4f17f3e148f4..d30928325cabc0b4df3426829ddb6d73e06694b8 100644 GIT binary patch delta 19152 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 Fe*uT^8{q%| delta 18631 zcmbVz4O|q}_x{Yl0s_h^ATJ^;EC?tnCITwrq9B8>C>Xv2;u|W6iixGIhV}(l3_BH8 zW>|hp%Zj8DwG7`v%M{Iu@{P=D4NXcdD{KGHof&p^{J(tupWlAEp65R2+;h%7_s*T! zVQX)9Zoc7MT@jd<9#+Whl=5t)FI}~ftJke&+FMMG9935aa8lrIv z(HuS|jx+TulZWnfhN2dY*_BYTFoA!BHVcvb6ZC-)N$(3j^sC^*KS?f5k)(6-p%f<{ zej`2X6v@9pkK^BM^cpn(h2}eGYUy|M?mBtb$2$MS_a0QnaRW{^aXg%h7F|5L_Re6( z&K^o}2}-@PlH)2n|Mz8%vv3<4OGoY(FwVLz3;*1i#60-Egh7^Wm3r$%xnI=Le`dH8 z;h#rnhl{U}oJ9>TBVALVwQd_lg6kmOml9o#-QPuoREwKfrF(HZ22`eo8?03mXsK%u z??szkNAMTvtm_c|EP1;5_ijmHK0EUmWAlBpPD&vA5s0eJAN^yqiIsx&{fUUsIGo12 zbr-lvG|$b@>rf`MDB;D*U#;h$&Zun9sB{hzE!jO0@UU2Z)XlnaBJFVta7!P?eClH9 zbGKmOsE%&B#Sf`m!Eqn6dRbh`@9|z6-uTyM+aJQ}aAmxmd=Dh5u?DtCa2|wpOD4_i z6rM8>(Ji_S+n^{vW|%%JcV^0rqx1TCg{+4QX6>5+>n0a@MLNf@p$QmsJpnG~Rg0BP z*M9-3JZ$|n9UDk2zY&ED=Tb|j5I&9Wb?PZJjUzvI5}qDUd)!lm2|Bvv-d|YVoeUm1 z!f|I>Y~apn;lzSwOWGZAt0i^%hFWoJ6LzW(Y*Y4QS-6x2{3B(P;LUOS zS;x9siEhv9B`HR!&w;Vbwn|s5#Ly!~wYcsWt1Fqj0?ZQ=B>fCUpEOA77AW0=qglL} zvX2^xJOXcxf3qv#ur&wkmC`UvR#(~8-BB~9PL$NSvU;Ok{epD;9JU5P?O{!25wTro z9;FCBg3RU^EEg(!-luwNT5rUXcKLre!lbX+Q zUj5VVdp-F)61wfB*F6O0wpZ7*Yi)t(j=RseFo~ObnDO_^i`v~Sx}WkmZl2ez#@k-K z(e#~d=->95b(lF@`H4LC8XNm_9<2@x7GBAtZGjQymGZEY7>&Y4=_8Q4a z*R)n?d>V`0xkzy=$4+Ch>h=;Y3-|BEotq4w6t}y=$dEM zFAE9~gg+~&D!8}r@d{~SrH!=#=D0AXO{G)8z0BvB1~)Muwuu-nZ^SJ@_a#OH zBXD2EU1}?3goO)dCexCzp2ES&v^gx=z(dU}JIr-<^9$I&wq|WNC?cP{^3y(`7m+}HP=39=yPnIxRoC> zP-s#hdG&IS4w7R?74?^~8qdo<^oM8ZWO%Wl%c8*%y@Y=zQGSG9taFx>j`g`)Hk&2Q zP~OU8r+8uRPKsg;6y<9SZYvn+l0~~BqJpgJwCUYIU!K#EXXr*m->6p^frFN<@yjw+ zGkVT$y_imfN6@@pqlHZqX>YGy8SC+g#p)mbi;|7Al8r@C^z2Y{q`6U1I74AivuYxR zMn(lKS*uNRIr?&%8ANjQh#cI#_Tvzo&@w_-GQNG!|n#P8Cw4OYVU zxrwf_dDi{`+@w2T)sz8w7-$)9K;L)4(4f(Ojz+s%eOUB5JHAun7XPnV(%!tn8A ziw+WE##7JUQ9;YsXuYpQU-mw(n(}+!5Ns1@LZ6;O>jWz9vo-pI$JCkbm9aY0-Hed7 zqg?;*^Lc1vTKj{vU>%)jdlKQ9L?z4L%2JRR`m@Q-XBNL z_Z3Hck0%MlY-H4q>qxmuH(0UofCbj5-GZBDaicY&P15!nO~!sv zK}D;y`7T9Y&NqD%&F?oM+JzCyUJ+!hR`AcV4(l@(y3%i8&)ykwR`-8kS@}x=1AdkQ z24+zI{t-cQFvPKt3+yhEEmYD!I?BihC18k*)qvgY);H*Kzn*ltzhBREQH~kl5Hnsb z!8Vb)#YP0JTd9q?0eyLr(>GF9Y*cg#Bb1oKWUR)Fvs=4wq@A(zgxRCXb3nRqeH2X| zV2rzlr(ag}=e~d7+HF%5YdRDi*Y3}wXwQI%pr2M~vuZS|ir7 zN`@x@pOIlR;8W?8@KE3ADQuvUeYT9%?8n%>hE~*9J>7%G-V0hxXR5|ag@31`5 z!#+Fdj-|=$Fveojh?dmjjcj@`jHuE*oJzL`Mg-L^*XF(xeL43>pQO0BUeU7|q2x46 z#%fNJ?bdysr1H34g7{^?tyh zpWVQ@y#9@Z*Ljyk#dvy~OSOajg>l8Sba1o~R!rLl2X%6W0_Fdwhz<{)AzVqOkRd@r zWikyLVi2wjqg?b(4Wl(fqJq4Ov|0F}FVEnnnGO%hir%$Yo$pQ=tMh%45z>5@nrYb3 zBw_esdTi*3&VMhGy&{J@i|Es#4+VXwFdff5jp)lGpL-lPTw@GOA7`Ah(2vSk4Ykxh zApLQgpOhr{E~5V?jnI`j^$zI4nRIIg~C83kW(^sIAor^kuKxSCc+DA!z9X1}p3aV^&i^@)N=r3+Sih zWNThU8$L1`!B0UE1j|5_?JTjOvhsOoQDfS)HNo0ehvUhomYKMcrt$+`x2D7GnYIBd$tE=!y8Mxtb7y?h>B59M6 z%5#OZ%lpUA8;6IclgID+GiRX^vOJJ#81(eXHdI}x}?PUy^tVh zd+G~TtSJ7GFchmOfu^Pygvkl?7{rcvdMPDbcru=jro;vvpR4tF5`Ed@%Vp#>qI7Ns z3sI#T0ns)X1<=o{)D4okevFG?oLH#~mAOF1b!A+ou8T~$Ldaj8*_TW`yXWJduDV++ zRF%#OL0t{rW^B?qV3f^wP{!(N?PY|tS{1lk*_yGbCosw~*&npk>w>gg*Wx5A>*=%7 za!FtKj2ETq&V;q&a^>3{CNPK7nyaN3S>-njBEI5_mGEoP^<_p%O3^Y_Q!>~+{EpX+ zQc52cs41=aR!S)+j?Rya%V>bcG5mYXQku_3Y4HCky2-&CCwsdZPZLvTn!lQj_lIc) zaVtuH6&R_0&xHK7vxUJX-TM&i1Gu*XR$9eM_Fm``GeO;ox=U|UJglvs$`!*jI&AhU zHW{*w&UzF!)&t+zY-Z_eiuyuC*#v_zz~MEC!Wx;ICY=F7$)>Lgd#f-~h2bg;Rbj9l zcF|qPw|i^Jrvquh^X@21AAbgKV%?#&UiCp>i>@A~Y^n>`o~Y7wY>_UogZ3pwJ6hJB zR=l*ImbCv-v@x=_F^-Z)`6cEs7Q3P=+#MVsdw&Z9+Sv2OUWM2OLe4{!^9aqSs!@TF z&l*@(Yc%yX@;l)u1=bbR)eYU=y21f%6k0-)w933R#PKK-;rqAXSOO z1-CdlEk=yL{t&L#=Tz>ASbu+;@5f8X zJUUc(c^17gy6=<~&}LMABUX+!JN$|Ke}cn8jM8}R$} zP?m;8H$-yWc?|TH9JjHSRDXYKGORGh?;(mD6WjBLneb&R#oEnv!;ANn87VVUW~JoL zJldrDWG0o4i3lsew3>7;!A`20rRQuAV)QYwDm6S77o24#9UL=8=rxes#{OkY#$S9k zob%c|kwvi#GU7pDY}MTR11?Cbgp@*OP{cT+aBn(|9ye216HB|t)eFtBG;4ex!=nD! zr>CVC1)U=qJ_20L-sexj$p22G-Q$M{h12MV@##Wlf9f}3j_~c&`e!C|;v;NR5UBDy zoA1NyZffay27PhEh0=J@(s#K;4NEPgBbh_I{L#yKI15e<7Tsf0$YbI_^DJ0b;=c5& z&9|Q2H7&XrHoo##v9f2Fghrz7bx^hKDL-Lr+g&X=h_dKBq216}`Pqst0~+zNB5L|9 zc|T(Bb&_4!eDfrioxjOpDV;2h9B{790~=nf{Is+OE=3DZA5HAxn*=KdABe8ol0!Eq zM(c|)kUgCq!U8nuX5>(>NudLWNo46IYZ5Bm_LchA5{oWOQmvS0(fI@64>BwEp(4&X z^ys9po*XEgKVLp9uV<6)3kBJHhs~$`lX|=D2VwIy&Zo9XLEYxYprfzGA6eu-stk&u zfUK8=(mr$`t5Ue$o6@o$7YcjR@$6(Fx;N=2KQ8Q!rVW#mg~Dh$K6$h7O;r8lhkp@- zRlO)}YJZ=^2)uc(Y>^IIX^ZGSiJ*$9xlt>iu<5OjBQ4C_wF_1s4_FM}?hMS51isRl zyr%h^2g%0CGTFoodds+;;qEei8JMlfQM{g3KDLNyI5w)QACw(`YO+NHDtfI{^?UO; z&deMz@IR4PaTu_1|5N#ME@ze;0Q`T+-y}PA21Ar_|2OIWfc-ffA}nE5nzh6Wib02b zROv5Ng-=fI8*>b;Dk?o2-ZqAaQl6=KqKD{w3*^^V~R?x(M z=tm~!yHDqx*b?r)H$TtGxg=Ajx5T>CubWfA2PU4f*=~Ghv#m$-1P(%rLA(E1{l9Z( z^Sv^08-1|-(=2mk&@p_WnVy_KdO+(OB@<0rg^77$JNzx9FuRNeF)6tUbJJtOr`~J+$rEp$ZcpXz>);M2HXPq2U5lZC@^jy;181N%qf_Y}ZPevgN+J-|!`kAf3mCfA7A6TnP% zAH#9Yz)V`uE&?<82HG`XCX>dZ62MGeN4p2iWY#!T;#EnSxjX3S(P7ekJSqXqWI0+m zFq4xfU{3(&LB4>N2wV&4o{6de>mmE2jRlT{WWOfJ1U5k~LCXflwaNX8HUpTOi1kNX z@G90{58yV5;}%1qhxA5U4{U&}M5_R?Pp^U(CbO#XxB1I*3D9zinzGr12f9Jmp3;4JJdU=!pcXfeR%wE&%RkqtU}$gj}i zfDL*0iz`|pa0%oFv?Sna$hXlo8x?EbHlmS=-{;FCZVkb&Vzgwtpd0fl6|wQ25yDyUVzILxOoo8eTi1PlLk0% ze|lNWL+q<353lFFIqoMkwg60aa^^Yb5s0AZ?|^glVS1XiEX%{gS?9rbLM&_By!(A?;5sek>r<@L@uD)oEI5CR$cS4oF|ect*VPFrGio$|0I;H^8! zy&}GgX=mQf1v^W2mhG&5z4mn)T@hcuzG4&KsWn#~{?L|CzxvpX-|<3gZoT)W-rblS zzFqEz)tX$8%a&as!uuSxzZS+{qTJVvIvoPH)6&;NbVeW(GoWs-cjpcC?(PuX9F~@Z zRs+?-&d8fspWcH_CQuLh@%2oq+ijqScXh|loiJXPBA^aHgZNg-^H%g@B`=47swJBr zfjFQZG=6s=RqrzBdN^S>NxA_*?F>=#ZfE!as=u>)lYn1ht=sc_zvXjFCzoLKPB*qR z22S8g=jJaPRUswziZm%0ndn-_P*BQH&c6`&Fo_cE{epL3|TSoHvI*@|j zcIQ9Y66))c4uiZ-w0&O~UrF=dHVT=YsP#;ssbmR@gu7BFdn|=%u`^6R3FH5;GyO{E zmX(5qlONw+$hXkMcZ@;{%3c>NMXHk{ZKsdk32~W;p(b}0ZA+}P%Y5{1dXP(9a7HO0 zPG8Oi4Hd!X2{2tc+cQ}6F4-Io1j6uV& z-z2f!u8z6@W{QSs6G4?|sQX|lG>j)^@wA2s08^`BqR3;f(JX>Dpb%=v`Cv>MW<8jx z8m1ado`%^5rbNTM3FZk6vky##hB;~mRjZ*cfvH9|YC<=`?9wm-mc35H1cGVQFay9e zYnU`Jtr}*k3n~}enfkpJY+eBExAxtF#pITQ3GC9bqZqRe4Cm#@YyS*)38Pro6O6Q6qbaOQF1#@3BfiN%}<^WP^xY2=e)-Xw6JpE)p%nlbM zm<1YUu`BM$uPYRm1E0rXG!)OF>=coQJqzXw4buRoEWpv`GMLCfN9H#$#}!8QEZ`*C z-b1#LnIJbjlNJX#QVB3h?&-+nf!P=A$ZP}?Yj9*<1vAwsGjh`JgIOEyXmb|Klt@SB zIv6v1(v(k3HhX8BSHaPaOc{2&mwAN9Hn^H8}Cq@OQyftiS4d zD5&d6j*JKz1ra& z!Qq432Br@8*dBhlx$-SfZ*tV{r`!f#0UjP{ScnkcH5mD9syb%m{V00BQHV9s`27p{ z5ZW(yE~C?zG7d+?D(ArEYalkJ(y~iH;w)<%KtC)xRj2(J4%Sb8$Vo# ze33O7kim1uylK!!6Yv1C;iJF#0$O*-DCkq{p>G@t=a*C0j~&Qxx_{W4p8vRpFQ);G zl7h_&gC1>Mh=-LQ8jbv7sVcjq={!vn55sB%D>zjjcJtAXcrYs{_Z(g*te2`lF^9wP zv+vv^M!_&bNhF!Cr&~utTwFXj4kYI9?F(3~c#^N!K9qLU*ed}%m)a2ln48ELoEPeT zpW#8puZQWXplFr~)_l~B1^f2sLeEy*G~}%`otL&!1?@Otq#;LGtpfR@^zN|`mjf7? zm##cs^lnB^uL*D&Ol^8c5*@|Ih~VQ3`39;yZWOLL(X2gT{AY9)ow{^;#gje>=PywH zCm}9(;RFg+T!=S5S*SaP#B_A_BY#@+kt>#LaFdb0FBSO~t!oN#@x+5|W`=ZEiUG{i z8Z$bwWTl!5M%37pfr%aMXtR}#vNIiX%ar`ED{wZ(htbFrGx<|eycs-5wT-4xco7H;-`)_z8Hu^i<2134?<^ zU8rNXGaY?*-k)r5xC)8RteE<42>q{(vxTM+0e@Hvd8u=pH*K8C@*nq%@!sW&J#q)4-Ndwu}jE?!r40GkHag_vD>HG>h ze%2^d%b6yB>Q3$l0x9-fIL@HS=OhKYOrYO>ZlTVE#~ArC!QP^+6L(8XX%>`d;G;<;sorCh6>fjzf|jhf^*$^vFB`)-z42gF`#s2&f3$+I)1 zkK!vEhS%B|=J8|~irpP-&Q-Ln8s!ggZ~{h{9w#4}zk@lYVO;S{+N@#xz+BTXkziWw zOveJY+xJ2*+VEArM^sp7Y+)l`LjAwSmdm2dmN=^TS`?yW=+Ytzu?(&j z5@kmCMihQzn>~z*zX=yiS@g@*h4k+?BHxL2d~amL4)Ja3N22Q*ue0vmXqA;mtYQZ= zT^9wb%pL-4mtoS+qHs@!2YwcLj?R8Ph!WdGoDd9s0Hl{t+>H*j7wBJmIfHM8^9H(k zbrHRNQ^diVf4fJGN#NZ;Ub?i1p8RDo5OWoEi>VoU4JcMZ;q4+$3C6tw6pz71>hfzi zZfeZo_FqMu+jfU0$>AfvEryy6@xLwdQ=v}B)?(&9cSIZncJoZh{KlQdP&4z*cSU}R zggk#2Y0}s6v=Ooy((MnCoeh7a)A*K7boXijIo}icw^UaplBd^2K;6{zv4u zN}g`~Bhq`9<7wf)B0Y2^o~)2{kn?OJ^=pl%Ymj?dXFThiPECb|VMnNri!nGfl-6406rYfAaZuV#ibA83wcUFi%cSy5WB zAb%NGo#l8~t;diBIAri8PC9Qm?qx9S{~=^24?BT4?hqJ*X4FYAYc|--+DS6 zy$Y&C6YO0!3<;@Oe*q>|W77&I3TLG1`d2U&8XE!k??z2RUSRNvlj_QcnGeIZ4nsR^OCK%HFPa;xnc&y3S*t13H89nhLfr*} zw;B$4xq9P`x0FFgrv6~Gxks5nt<@~oC@{>6oDeWKi!u1fi(E9fsGwvO-dk#xv=BD! zD1tibQ7|S9kr`Z<%bAa@S&rAG#d`=&1pDln!MhmtJ*4XB5SUoFme;8$fAQia1-P8E zYqq=b!RD`_)oapi15>T3)*oQjRK36wvCtqCpi5epxU+gCh z(;ti#4iQgk95)ioP4r-fQ+CvWuLswvbOC^Bo_ z_2fg$n*rG^Tut#sFeXi`U0_-@4n6=ArHS<^V>J2v4rUh^)w4U^^|Ft;8sRk)I`hV& zSSWDUa4;3YV7$Y|oC2mqvr4NNquC_u!PIJOUIEjH4AhVx)m-V!`%22NkP11AE~8dM$#fYZnVBjaHqj=n(*I%DFdknbHQH# zTEVE7O;<4NcvGig00TE%ikkHxPzF%)x&m;iV3=!lST-2#qsHu-0eXIrc?lGWn!GlH zY1I^=4oth<9X1ZzH=Ic`<3q5yXP+^iTncmZAG`uiF&oXO3x1%inqWVH*_B;$U(W|; z+y~CoYzJ@rNrYW$>g;2{G{S>gv=lI`XlgyOY6`mIn9hfSJ!+^GUk=7!6W~8!OqvDX z3Z_C+q1|BEGmRSZ0GK?Ga4t2RtYA)P=6Y!wD3+6&*DqiU8rMAjz|*Kn$Qw*HhNwx4 zU}`n4vubj?vBzR4^ay~|lq^<&F<`Ko=|(WDtGas$Osj@@3(R@V(eVlMqj+U=2_* zfiY-Sq8g09#^yCJ?4xd(L;o9d#tf=;f^;KMN_P=Vou&xCfmxtQ$OcCHSl87cmtGCl z7YzHTOqv0wm1a?<7|gf~G;2@+2+4CGyd{}&;WZWRCk