From 90c6f7053004330b895c3131970bd6e2b05071d4 Mon Sep 17 00:00:00 2001 From: noah Date: Wed, 20 Apr 2022 18:54:33 -0500 Subject: [PATCH] Fixing edge cases from deletion when right subtree of deleted node has no left child --- .../CMakeFiles/RBlib.dir/src/Red-Black.cpp.o | Bin 12848 -> 12912 bytes build/CMakeFiles/main.dir/src/main.cpp.o | Bin 9088 -> 9984 bytes build/libRBlib.a | Bin 13254 -> 13318 bytes build/main | Bin 28216 -> 28216 bytes src/Red-Black.cpp | 33 +++++++++++------- src/main.cpp | 3 +- 6 files changed, 21 insertions(+), 15 deletions(-) diff --git a/build/CMakeFiles/RBlib.dir/src/Red-Black.cpp.o b/build/CMakeFiles/RBlib.dir/src/Red-Black.cpp.o index b5d0f72bf3d2b4b3ef83170b0d85c689507a5a42..b4372e2627b10acff880a39e50b1f0fcbf5ba2a1 100644 GIT binary patch delta 1246 zcma)5QAkr!7{2GSz`Kof6T03Wbi$n1xy_A);maEd(QWL=llM1?zvA# zzK+c3ay+^a4ko%DxAU1n7*-Bv7uc+frs-;BXi`_OGEUPKimDPnDS(YDYF<}+;rKt{Xc3he*32?#?t<=&e^X; zd75NmUCk!luFS0#x@}fCEM%N}@6*LkaKjzQT0L8tG&{1ssv*uS|;9;GC&Nf9yL=b>pd*OQl83t-tkpuf?{lYMGl$du;z$qqDr22i4(;kO3v`{MLxa;ClQ(8$Q?G; z9w_X4Ns-|-zIK(o;F?!8H1D7nH5=UX8}o$c?LnB+y`%}&k<2hL#CmPi&2pXOW_(wYufwpeYLhkCyUa(MtHC~DYsoX7xXRPl`S=4*|IU!C z%fn;&jyr{1e;LPrM`{poO~CyE-YWPs3b%C^6uJz#p%dKk y6uAoNxFJt@xm7N%lNl()4Uz{XVaR$X98aXk8=wgTZ%rX#C?>m%*uH=-*76rtu(Rj@ delta 1165 zcmZ{iPiPZC6vlVf7P`r%_K$UqV2qe1+n8)NQe1lJS`gioQp~}Mh+t@uUOZHyA}CVS z!`ee552RATdaHtH2%;Co5^7ky7!hwp3kr>?wa`luHNKf9?HtU5oqh9u@B4P9AASbfur#DVv*()_r zdb+9h(<|ibwAt7OQ!f8edS_qFC}9_BDe4C7%EnkWFZ(|_(6g2{;JizTPITjtswbLA z2bwlFcDc0thhA!>Hn(yChTKCW15e!3jdV0Z?wA}E#i9sJZGKrFdkCK z2bM1|)pxpj)_E1Y3dP{6Dia?ph7@m?Ys)dhIUa&BRUv(J^$v19KCb69JVbh~4jp6u zSL)E4OgqU@{_78*RaHEXc?zB`1(riH$x}u?QTNo>YKMrYYT-^+=IU)+eT{Q$=jy-e z^!s71OCg=GFRXZ@ZWLh9*$45d&E9|{Qj?>d96bf&NK+i`=IAJ7kzT0MFcO2Kmtip+ z!hel)z##bQi%b%74T@1iQg>k+Mh03nLv-9wY~BfHHMP;9R*==(VMbGl1CC~j>uzwx zdWjzrF>~8tS%73q2h7A&@)8`ZSk;POSH<^X=+}G6aj;qCkkt160~(}@yZ`_I diff --git a/build/CMakeFiles/main.dir/src/main.cpp.o b/build/CMakeFiles/main.dir/src/main.cpp.o index fd56bd5de50748c6858cd98d8b150ce112ca91b6..dab0bb341efb51c2e33a1c9c158f3075b9ea0833 100644 GIT binary patch delta 2421 zcmZ`)YiL|W6rQ>J%-(zLZuT*`Np6zeWRu-I%%hUjNVkR*TC1((hoXU?5o235wgDAI zYT^&2KN_h${Sj6IR(z03XhYD}YN1-eKh+{t8lzhR64XM}7KGX=@yy(t^lTsld*+_+ zJLj7-XYSq^+cviAa7H^Sn86M@M@%TVCe(Jmq6-f6Yyuo#4Lrb#{ust)Wx!_`cTJub#^u zbS?zUzjbya;QLW$W5M4wbiUMm&{J6kZv}qQync8wnAXO9Fd4ihy?n{{o(-%UMndtX z4QxABL`T1JLKITZkHKpp;lUlj7pXX(g_)4>T|y=d-vy)mC+Swolo8%D$>>r?RiZF}vvK=E8iI_8*mI)3&sp+jv1!q9*ncAmY7r>hzX1K^)3>V zhH({hc1_HKMKMb;q12xtXd~Eh2R%g4EbNTSH4ns#*Zh#gq+uG_6xq=k&+W6Qfr3&n z6U7QYkQnS&LYVZe;E)soUP>4ieH-d!8*s>}0wxo(vTrbxcB2;t6WBk2{S$`yB+1A^ zi%|U&#TlbAW(j-6 z#bqT1!50ZmE4fN^>PY-`S;^=>B&(FL3_q4~$W^GC&&6dLRWk{mMsB4)g5V7V&pP<1 zIxM>Rjq4=rAUJJDpNp?;$0G!%8yFxubqqhkE0qorB26mYNALu}UtR~FA-Ev%pAmdj zXB5AE=Lunxgi8dcLW}F*e-eCk0n}&iMIeu?iRcFr-;2IFV-F$1B%zt$!o_8)TL_+X zae0ib1g|GLZBQr^Cf&w1_3bXR3@b`<9>QliWU-a7*%B7r${xiztPR7KXs<$KS%=o=V8$blMN|RXKhYtm-Y=SS9pV z=QIdF9;bH#FkhW3`6J+{J`Bm4E^TWN`fGC9!64*u3fnM`)8QbLCv#fHhJKtTki+St zptF23qn$)PmD3h57pHq|$ft7gxe`ZrLN*eIyipRclxiy3e}@8?fMji#_8Y3!*8dMN C7Rs^! delta 1818 zcmZ`)UuYaf9Nw8^?{3rG(EFF!-QI<}+xrtzV+m>^w!KCalNPL0(1&0i3RMH;AOQuT zXit2x&}iZFrB%Tw+7?ZV6GldU&jPuOAWEmIOhnxnj zF7r>z_^a!eE*e~mJMZ@xYjN`*%V;LvVKn&NLNk%Y$;55mZ{jVh!cTYObL&4j`n2a~ ze6c0vy!jKK%e@3vXo;_HPUmTOrdTPd~`*xIBr2wqWBj z;&QnghwKb{O<@nIcm%)MHLIUiEZcd7T~z9Vf}hOrfICo-7reSYzJ?>D?=7_YXg8Qs+P)9>DTyUl8N0Sn0;tcX@p z;H#wV9M`x2PD(gsEprJhB`}e)y{d+`v>XqOl=SeD*e8W=rIWNlo_+K$KDo6%l%Bdhi)8=c9cnuhjEY3^^( zJQvXn^$F#ESVIRe6{5#Aw1&ApS#!BBTJyA~32>L#g0`}YbhKnsrwDnW_D@6|ZfY9Z zKM_4O48yL#l8By~sx%CJJ+zds<3@d-(lh~flglpGW`{5@1m1AV@|?NiXo*}pXZxt0 zq2b3gJfq>*1iz}`SxtXa!$Y5#`l?!35n}IMjn>oFH^Hs&Mv$~VEg$nfZAHk+_ak?> zv&ccr`eOI6#%|ZxogqF**pP;gX|*24R8DyM497_+o1BSdsKQ1c|HE z`DbyuVf!#s8Q^D#C*)VkrS7r^zgo}U2>%VH!f^1+Zg@Pi5Mg(aOiakV7DO9mq zhKSLAq6fw1qA0yo0`;KOKruZCQcsE??MWI!e?T#U)^&EK+b)6w^Ygy62>sL*;KN$VxvvHQOfpP!Cnh!7=K|%wxnrNHkT@~d(Cy4 zywymJnWf2sMpi59mL%$bv0zG7vOslkLEMG9VZ`BSW)+ZiUJ0pI?7FTSg#0h@@sF;X zE_6dflj0hF49zr2%xBwGvSwn9tf?kN{YRP2Hd|eWW>?3UmRQZEjf+U_Xj5Lt4k)X+ zQLkgGO0(MkDYV3|Y?770FGV9iww-c^=(U*!Rl0A(`1?&+*DYmM<~EI^(i(YswFGmn z6X*=I)ITiF)(0`xF}&W>3A-C#qU*&sjVJ9$FS=Xio8YMI!p8(Cv`e^Gn3N@aii2|u zToxcqW7l}>Hb;*I*r35_0XjM){E7$P@!%%`7OB+=4}N2L(0jlOpW9uy)yekpJ6U4P z$!v~0Sw7YMX@5i!jqBc_y~B^q;WR zS+sdr54b(|E$m?nTL3xeMo%Cf^wE!y3C0nf9(3msng(AeF7&lhF>TLaC=|yv5$+z8 zU^e7OHCPHMbd>eF6;AqNfGD=otYlZYvV>(pLq&pPLNbV*0xb%`h&- zqBDZl!7~P4GGSi#ePG}-r3NHi73S$ky8`&_65i8+ENZS3BBZIyD?-gK*}|f}Ev}s! z7yW+Gx1=2f>H}8WScAosX)~}lz~`~rCJpQ<1A7}19xIxLX-_X*eZ~_;)O_@&5V{8w zzA*1TPQ~=3;i)f-*F;z!l;DTYjn=^FSLmJaEBL1fOa3U5p-f%F;0!3}6(j-*Z1_#^ zBoM)G`(ZN>MI+!0DtO$iCz%Sm!4aT*FoG7KOo^?2kV8?l42h6}ILOf31m#fgU%7}> A=Kufz diff --git a/build/main b/build/main index 4b9f9ed2ac52baeb9a06ea7e8973a12bb8734014..22e00fa1d18c60c32d78e2abc97a31cf49b3e74c 100755 GIT binary patch delta 6043 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 C3z@wD delta 5667 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 diff --git a/src/Red-Black.cpp b/src/Red-Black.cpp index e93b635..8424da7 100644 --- a/src/Red-Black.cpp +++ b/src/Red-Black.cpp @@ -126,11 +126,13 @@ void RB::del(Node* node, int key){ if (node -> get_lchild() == nullptr && node -> get_rchild() == nullptr){ if (node -> get_parent() -> get_lchild() == node){ Node* p = node -> get_parent(); + node -> set_parent(nullptr); p -> set_lchild(nullptr); node = p; } else{ Node* p = node -> get_parent(); + node -> set_parent(nullptr); p -> set_rchild(nullptr); node = p; } @@ -138,36 +140,41 @@ void RB::del(Node* node, int key){ //Case 2: No rchild else if (node -> get_lchild() != nullptr && node -> get_rchild() == nullptr){ Node* p = node -> get_parent(); - if (p -> get_lchild() == node){ - node = node -> get_lchild(); - p -> set_lchild(node); - node -> set_parent(p); + Node* lchild = node -> get_lchild(); + node -> set_parent(nullptr); + node -> set_lchild(nullptr); + if (p -> get_lchild() == node){ + p -> set_lchild(lchild); } else{ - node = node -> get_lchild(); - p -> set_rchild(node); - node -> set_parent(p); + p -> set_rchild(lchild); } + lchild -> set_parent(p); + node = lchild; } //Case 3: Get successor else{ - Node* rtree = node -> get_rchild(); Node* p = node -> get_parent(); Node* l = node -> get_lchild(); Node* r = node -> get_rchild(); - bool left = (p -> get_lchild() == node); + + node = r; while(node -> get_lchild() != nullptr){ node = node -> get_lchild(); } if (node -> get_rchild() != nullptr){ - node -> get_parent() -> set_lchild(node -> get_rchild()); - } node -> get_rchild() -> set_parent(node -> get_parent()); - + if(node != r){ + node -> get_parent() -> set_lchild(node -> get_rchild()); + node -> get_rchild() -> set_parent(node -> get_parent()); + } + } + left ? p -> set_lchild(node) : p -> set_rchild(node); node -> set_parent(p); node -> set_lchild(l); - node -> set_rchild(r); + if(node != r) + node -> set_rchild(r); } } else{ diff --git a/src/main.cpp b/src/main.cpp index 602a77c..355b3af 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -49,7 +49,7 @@ int main(int argc, char *argv[]) std::cout << "After insertion:" << std::endl; tree2.display(tree2.get_root(), nullptr, false); std::cout << "" << std::endl; - /* + std::cout << "Deleting 127:" << std::endl; tree2.del(tree2.get_root(), 127); tree2.display(tree2.get_root(), nullptr, false); @@ -59,5 +59,4 @@ int main(int argc, char *argv[]) tree2.del(tree2.get_root(), 221); tree2.display(tree2.get_root(), nullptr, false); std::cout << "" << std::endl; - */ } \ No newline at end of file