From 9ee0f9e2812f47e8e7b9376447b68c7e007d2bcf Mon Sep 17 00:00:00 2001 From: Hofmann Jonas Date: Tue, 9 Dec 2025 18:41:02 +0100 Subject: [PATCH] treeSize and treeSize test now workingW --- bintree.c | 16 ++++++++++------ bintree.o | Bin 2243 -> 2243 bytes bintreeTests.c | 3 +-- runbintreeTests.exe | Bin 102047 -> 102047 bytes 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/bintree.c b/bintree.c index 0f2f187..2cf83f8 100644 --- a/bintree.c +++ b/bintree.c @@ -24,7 +24,7 @@ TreeNode *addToTreeRec (TreeNode *currentNode, TreeNode *newNode, CompareFctType compareFct, int *isDuplicate, const int root); void clearTreeRec (TreeNode *currentNode); void clearNode (TreeNode *node); - void treeSizeRec (const TreeNode *currentNode, unsigned int *nodeCount); + int treeSizeRec (const TreeNode *currentNode); // Adds a copy of data's pointer destination to the tree using compareFct for ordering. Accepts duplicates @@ -134,19 +134,23 @@ unsigned int treeSize(const TreeNode *root) unsigned int amountOfNodes = 0; - treeSizeRec(root, &amountOfNodes); + amountOfNodes = treeSizeRec(root); return amountOfNodes; } -void treeSizeRec(const TreeNode *currentNode, unsigned int *nodeCount) + +int treeSizeRec(const TreeNode *currentNode) { + int nodeCount = 0; + + if (currentNode != NULL) { - treeSizeRec(currentNode->left, nodeCount); - *nodeCount++; - treeSizeRec(currentNode->right, nodeCount); + nodeCount += treeSizeRec(currentNode->left); + nodeCount += treeSizeRec(currentNode->right); + return nodeCount + 1; } } diff --git a/bintree.o b/bintree.o index 96c8f39a5e111e8ddb6c6941f742f92a26006228..48f3a9c95e67e4330fb83d9cf1d097fde2c8517e 100644 GIT binary patch delta 177 zcmX>scvx`5Mdtc$R{@XCgD-d(7#KQT|8%?l@n}9`5PLY(qw}dp^BV(?PG5oJu77~C z3?9w30t_X39v~gv4jdp|*Z%+i&j{245ds@@7$O8TsQCcnYoI2OX%kQYBL_1pM-dA% wV*mrgscvx`5Mdtcm*FPTJz5*VdhhA_pFfeojxy?rmVh@LUbUyWHexu;g36czz@Mx|T zU??&1=ynzG=yu@n=mrXP9(-~2|Ns9$F`)DT7LQIK4Uq?`fyi$K%1;2As1SR20t_&6 zFtc(Lu`n|RFfdFGVDV%$nmmgoi1#TI1A`0D2_V{h^G_CcCdQ|e9oeNB%{Rxgr!fKm D>AgX- diff --git a/bintreeTests.c b/bintreeTests.c index eddc237..c187aaf 100644 --- a/bintreeTests.c +++ b/bintreeTests.c @@ -163,7 +163,6 @@ void test_treeSizeWorkingLikeExpected(void) testRoot = addToTree(testRoot, &score5, sizeof(int), compareIntEntries, NULL); testRoot = addToTree(testRoot, &score6, sizeof(int), compareIntEntries, NULL); testRoot = addToTree(testRoot, &score7, sizeof(int), compareIntEntries, NULL); - testRoot = addToTree(testRoot, &score4, sizeof(int), compareIntEntries, NULL); testTreeSize = treeSize(testRoot); @@ -182,7 +181,7 @@ int main() RUN_TEST(test_addToTreeExpandsTreeCorrectly); // RUN_TEST(test_nextTreeDataReturnsNextDataCorrectly); RUN_TEST(test_clearTreeworksLikeExpected); - // RUN_TEST(test_treeSizeWorkingLikeExpected); + RUN_TEST(test_treeSizeWorkingLikeExpected); return UNITY_END(); } diff --git a/runbintreeTests.exe b/runbintreeTests.exe index 13bdb19ef48a964f30b062634ed040939d694a97..6e09e247fb89f41297861e1b839295ee6906e127 100644 GIT binary patch delta 15434 zcmbVydt6l2`uAP~gM$JCBFdfNK6v4xAfO@_!A1oE#k=C5qT&@5)GP%hD;zQGDYtn_ zK|STQFf2+>hFMu=g`G6*oQ%p&V_0E&v=W{7yY?PtX8XRs-ybiZ&)U!T`99Bjp0(Cq zd#$|}v*#t3JukV`KdsWt-o9nLYI^YYuUE5bDrD*GE!xiVS$Xq!tc9`q<`;CsWf?yIhw^odLTZMY&gsHgfpTZ;f zyn{-n-nE|Qt+HO%trulW8G_bOql*vwm0Db~T}ogy&m`7kC`+Q09^pP05I@_bG1RI5 zwj1uX*%3N(9+me9VsW&sM;7a%3q6Lho8+ePjoCSx2Xqfb6^qZlCMkQxYKS`bckWv( zhFX=mbTZ;sQ=XsB1Ii}V*&|oSGLblU}nll>nFgmR9 z*YwEZ0o4WcsV11k&<#y;>cL7uc$W{9$))BGrrmt#fyMH62p@nw6K&*ikQj!S;ETpR z31QBpnXZvjekg*Edh?6mYu?w*D4snlbLN@(vD%O)5P>`Ul)?F|i+m^Cb9v35Q0ICw zBF?Wj)SkWmD^Tre^RZk(s5jKy(4&2u>9T7GE2TeNgV4>h zXN%~jTLdelzV3<4lg7D6sP3lF3il!GP5Qfg1bd0j!7!67z@sR_BhgvqD+pxl)rZPG zJXkDMc?@JH>4--v%c1{xM6yP5(+&ims*Q60q#y5g&L0?f^9Wj^UBf=6YuXsLhdexE zSS6+4I*#Vx8cJI|V^nvYsKryyKBacg?(cUJBA&nKYPchwlHa2MtXZNBjtI=u%WaDS2t?(j;Z>d z-;-K2&e}ke6J~x+r)g5BDd)Cf=UL3mK5)r=`yju*g$tiR=4rj{ecFYG1NZ5D1jA^UInvxH_wO(IO|OF$v$7Gs!TbaJhB@q)#h}Wa=KuQ zw>3E4P@Cs@Hm3_#)LQQ;RK#LHJPoD{4X<^{VzDq(ktr$A8JR+$npW1qQz2Tt;;(x! zc=zmk6wW@O{Gcez;?+Te=kA{=2->)uF71;qpaHkEp6X}8+|qjG zTRZ~UNt$LOv-ypTb$EwQXA;I;7B%_dW7Wk(KvYi8=Yh(^`~SE z89(vRbU|3>u8mbU0#rKJEWOPzWm(Q`lX^Co)STOoyPMQg0c&$^^9(iXJB2Dglg}7X zZ((X!V%k!3Iv?+0%IUm&xx>|@j&EiD6 zdqSNqt6tWM!SFn4^-PydcW8OI57w#8;R$RtwS*^o4z@;ax-CT>Mi0W1SqBY`h{0N9 zj2PzmIl@YwxJBs^e)Mf}Px6Y4RP~)mDUm}|Y$7d<9HswvHELpz z+|b0!GOqAFA#DM5>d!fWP06Hwi7umRTp?K^gH!>96dVCXc6;a8yuArKVjE>f z^h4HOdM9qM=CD*r*q-AKC!`$j)3K;vHjCP#g4kI46&Y5*=9r<<<~!53+9W_J;v2}DRIwrDlgEGV4q06mVwVh|+tEY~RrTf#Kn4bEX+-mK} zR2kdT6M~qtTsCy>HyS@lsgxj^8X6Q;x2tong*saqH(=4eMd3S+CPn za&kT;$HWBa*DISg5W3v7zv!`;Sp5%=+Z*$(jO~rN#0hCs_tS-#=&%}sx((g!``K!6hQZdpU#O{nOu%c8Dcjc!T~4`?Zud{Cn!$DJU`>&+ zy?x_t&Vk$bI3u=DITp(}*89`ukN9p=r+&eje84aK3ChuPQ}tcov+BRrDU&~dE+;=< z$Kx4H)HEO|VBbS-uh`rwUmv)bu`#q{P$;(hZG(c?Ryr~$CZKt(GH?rYIq+uc9P|sD zO;=-sSq9yYeL;U`wY`VG%h=w->zt78KntCU^B1|$js46}s@dDo09HU%>E;nG`(|kzyZiLqWL*^*{PK$9K^b?;V`T^L_%&fMRQ;pZrTHKW!*`pUca927_ z*yonDnjyz|)LQKHX3T0c4L6_T7MRyVkVn%b_IybUpY#+H)n{$t+X!+nFfm`^C zI~vgSBX5(hl+N#GDIK2T!BGMGS1HpSfG($7O_ss^^>evyO*dP{_H>hN&Jk2NBr))n zQF1mvhipUTu6I%6kf?yuE0x(kfG%ev`hG}^ek0ed+1AV0o~^>>oJB(t7qIu}Z;1xX z!)u8VL$b5v%sYN~=>mOVx8)ar1tW z;YWbCW!MJz8-17*tKV5}Z})RDwzu2F328b{YYrUh%J6m`l^mJ;UAo-liQnON)T}oP z(gGHdDYI#u#S}4^vOj1=ZSz1*)T!U3P03LK?aP$Sz6M=R@j9JJj@Iwxx^*0P%h=wY z=WWh&sdq{=cC%qAL7F7an$)p0J0*avq{mW%*mLv(t{bT(B}R8(sWRgc=yJw&*rFVE ztVP^lO+8=6_SCa%wFc1G)Cd+#%TxU|PMkHVyJ&lA0M>`2sX=TGeS&K~T~Cb(SiMA< zdL48*wSfi=OB)r&b!*088QU}Z*qndBCc{@ty}Vkc@IifsKZtc|BOM*)A8>lHGS3Il z1@6 zX+i8dolgq|{xvN~H87RjN9qG6E>tF;0$olXNd+T|^yUTjPF|C-y_5gqgfznr()p2T ztcrT3k8&Fhmal3^o=DTuhXi)bSLP6G)joTa9*+qh0MAqK=^o4zGPdVA#tA78)}r(@ zEPsg^g+?1sY}d+e$-$8zcPDF2~H=O`O_ z47znhtyQg?ximco$W^<@E89O{)7s)w8t-3_!rgP4VbG7R6GW7_A{H@AA%slzdii?*zPB!Zys4?7o zG^W&Si{ z=KfOq-^1R6*XI968>$^*3UbUWYJa4-sxJ(9DK_lHNQX&I>ToXP?=W8u&#M1B3th$^ z;P2hA)+`@R1aTJ()2zM%&IBuana`g_lX06cklj9iq7wH>m3`Fa*WhD5am8Y(lHT#H z2M#z8;1$u5M^T~v|6=FzFlW`q?k1d7FSWx(cDTR}=hsZ+uYqfTMCRxu~tpjDNE}lLc z(=S=%EC$UB&q2T-Ir>pl=-?kBy{*KHAmnzW$n7Yhz_9^Q7Xx^sc=d`fZ3te{q>1}3 zXX^?y@)3hm@$|az?6i7Hx?OdNIodyK`KyA6x+4nRcFWvj)>1g8}L+vNpZT&FOF}OQvecl9| zA-3fW^6Cexp{^)GXQ<8f^|koiC6Do8>|070A3NoZY5Y+4ilKHK4yY!2T70%Hl4j+b z7M}?~I2(3C&f53P^Kh2RTa|F&#J$f%7=q=B-P~IHNu@_ZD?aA+ zGm7PThgmj84q@@xDTQ?RbPB^#yu- zQh)8M6L<>k6Q?lbXVov#8*Vmj3@}({ib49=*yY$eRk?_s9SrP zFON&5xuA{;CEr=Iqc6f>@icEhOVHUzTyd*0g*hI=@nji?(C%4&RnN=5BW11!w_|E> z-&-1BEV~?k3(W6=!-1?NatjuO`uc}u_x~j?+22uC@c@p*|EBl12KfJ# zgRS))WR=td2ST9_lPcJIv^9Pg}^Sug6g$%x(cmI`Bi7_Nbw?Jl%R@r3rYM(Fj@mASN z2aV~jtyZm}`KIw(CN3>!q0JZOEO%n@&6)FSnBV0#i)AZH1j-SVf1sR4d9nGM1#?+s z=S7R<;qsD|^TjDY$B$8I*|>!IvWFVG<$u?W&EJ*fGq3WQO1HM=%*72VV#`{pe1ip{ zsX-99JdE-W;3mkT5JC6|n9By8AbbhTAdiz+9H02#vCQ4%iKt z%kNQqfjc30g$Y7LqfjM*uc5@lz-4Q=AdCR!vMvHo3^12Jq7(sh85$`FMqn=6P?i95 znI9zxYk|2ugYpD0m*)pyW&m@kA1DYf0&}@wV3i;ofU*F}J(T0XToSgSR$wkuu#21r z=JF?$%fMW2#twZAn9E|kZgc{38Ji#oUBFyEK+)`#<(eUa&hq#_Y8m%bzL?^s|i@1Ya`b9psQ5M}~%xi(!876NnmZl)kq0CRaaOAxAoxs1sc zgss3_K57tzoxoh~8zTr+`=M}fbu8{XFqdh0m_lL@xVsNb0{gm zZIHjAWCM3X-a;_|3zGyP4kZ^j9`YDU5pXNy85ARM8{|h=wdZjR`A?L`_u>Ax1B}7z zKs5{nkgwwfVk@r<88Q>Y1+0TCMri^zLM}mh3m6ZUpee>^0eeF7_x$&Px%>^~OW;n( z6|<3t^N=fzf^dUl$Zb`)+=fyQxf`VmxB>D!it~Q76jE1$B*0w0gW?9<3Yjqna|4*m zH7J3=)sVMPbil$~K^Te>!F?b3{ zfe_B-MxB>DKN;WAe5!6-8gQ}tL*S_#RSP<7#*QG^NF)gY$v%so!ry7zk2`E`|J1b z+)v}59_nN~Sl(Ro^z%$Lqv!U}z7)U3vnLiUsaoV<&KS3NvWDgrTfSy&Msx1gxoT~b z`Z!`@8I`<yE|ItzL9i$0#$uB(#So*D!+|XyeEn2=(#-!Yyf?@Cmv^QcX2h6z9EUNrQ(KA zR!`LpN$CfyF?&o}R#x%o#EO+!k5-flv7y_g=&wI)%`08HeC4A;TJj_&D$g1kzc1P+qsH3DOXy?zyY4)Tk+$qhLy(X5C1ERmux}Xqh*J0KSsTsSAC2m- z?e9ws`#o4EP=rc&qWR+fWQN~4xW632&e5QkQ}IKB1uu`lvC#gPOYqL^@=CU$iOL5!GV01Mhyo(Ncvlz zgI9;6GJL#)-99|qlg>Uo|Q&%%@r@QJHay@bqzv}ql$YA^!KUB_-FHK#f_I1O`9Djb!wj!Fl$ zzTThtQOE1cRh@}6v-z;AjJyDe`#3|Wn z4V^h&}@gV}mwtu!E(12*1@HlggG=jIUfer*x&Dc8aCUH%qju z6CB*`CcsV4is@@uUXFLLL?`gvnyj*lRl>hjo2jg2j>o5Q4h~c3N=r2RiP&3@;d6HV zTV;&sr?Xq_n`}%g)2|N!2KK7pFJbhi*MILWH#bIxN#xz1vTST;cE0Sgaq#bssh2dX+xLHH~iKdWrmQ zMPv2L#B~vs-3sBW=ayT+SV|9q@}>*8;B!3d=^u3%mT)2d+J0n@Hv zJ^_Qf>(H@pz+@NgNaZu7r>kkkR$V+<6#4%4|HVkJmSmWO5t|k&l|6&_Y_Y3!BCK6wLCB> z!H&!-Fh41nr@(9uk$vRIBA8;GBXdlHuiw~EN9sJB9w?aqf>{&p=o5lh_|6DNCIyV2 zUS{OJjs=quYlksB)Ig8#SuCTKDqW=_PJ(V~bP* z6MuGNm)Je=v^!hObmAZnwpgXhmiK|<9?aj{nB84jz+VC~w29w&uyEEUs?eQ&BC?uIgY8; zir;v!&>h~azjv$6(A@z+O!H>O#)*fXlO(NaeP=9jN5T~%5kw2kg=KzE)takejd*FIYA9pc4`hkUR{ z?)764p!w3IK7>Ij5b-jXgutQxNYjqDg%EX^8|FVyfNOWScCpSM11z|RfBCa*DqXIW ze|x;Mcp!lF^)}`{oL?ti2tfYwTsgng!OlQz++b{@%F4xALF^f36n_aqbkFg;RpQ!U zrf1b+V=xPk>>S@6nBT-f_^7SMA(=d%yW8d|UdIpQQR8$7VpWTUIu=fIx&p;|9n)y* z3%dPzgc;%r9SgB_t6KbAhpG*{YPi^{XFbI(9d5-Rp==~rL<*^T2}#=&L5_gY6*`7J z4W?DWTm{4b*Ti zE`qD=Vtyq0V-TaGFrMv2wxMS$I9`P0!9S#>|reYm`Fa*J9 zV|YZSrOvKk*V$HUgLq~jo~kA>ZV+qkRgdk9FYZpPw|F6u`Kj8ci0#QNQ5+GAiEFkh zC!mNfv23WA5(o4IM{mZldMpNo*=&(`ES@cu@nUgH0$U=g;@~lGFnp^yIy9Koi=*RV zczFme!Q5p-qKsTcO9C4t>XP7GF&NIfIr=#fC~zpy!X%(w9Q}tQ-(;Y9LxFa1^gTy? zQh_npiLZo2DBp$Aa?|)4IG{0sEZ>*8qm6tKp%4ShYhVx2bVn(96o6bVn#a9$_$`W z9CdOuA_HhyCeR6vZg7;63A8Ay8=12(v~BXx{xAw%knmSxViw$rbFgGymizHl_k7bJYv9jM~sHY_%Rryg^xfTI~JD=ZU`GEBUkay3Ah{Y zk3$lTcyj^y5%Cy$UJ1yiJ1n>fYkBGB;mzk?|j7C!aa`X!&j3B zG`IjcKg)w5wh)&M`3U#gcs5sbnINk}#RC)I+?5aKsEI%;Cjjl|sFS0xBA{gxff_iv z!BOxephZPMFLGq&$bT}>{7FDNIl9JC-zjKlwcJpzsc5K#7mGhnW%a7+X;^{%igrKO#U z7HRSR9WQ<`i%s)xP^8)bgHB8+X5llfHa=E0u>(4|7?PH~&YHeE@F3;3*E6$C9En3d2Bud`l{_ z4hMsSg(v5+L`;;E^ROEfh|#4OGri>3J*G$Tp;NDj#Xo(j70kC_jABbEOXBaRzn0?t z^nm!me2m=z@j4e%MfU~hUb{GH0d8LBRPnt9xaB(W#|1F16GsIWQ5VAr14Vt&F z&5e(0e;pt7$VJlQHUpxnT`}sduwPcxxX5eRm{k=kmy|9;AR7ZL+<=d#Vp`k-^R&XJ zM=0)|;yD-yCL==eK#c^oR&m3M!0Z%S)`sSU~i delta 15359 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 X71vi;!&czq4U7fN0gr|3naKYEPVU^!