From c6cbff82c90d89cda3113b6a0df462df7ecea51b Mon Sep 17 00:00:00 2001 From: imgemp Date: Thu, 11 Dec 2014 14:38:34 -0500 Subject: [PATCH 1/2] Enabled root deletion for zero and one child roots --- algorithms/__init__.pyc | Bin 0 -> 109 bytes algorithms/binary_tree.py | 42 +++++++++++++++++---------- algorithms/binary_tree.pyc | Bin 0 -> 3766 bytes algorithms/tests/test_binary_tree.py | 16 ++++++++++ 4 files changed, 42 insertions(+), 16 deletions(-) create mode 100644 algorithms/__init__.pyc create mode 100644 algorithms/binary_tree.pyc diff --git a/algorithms/__init__.pyc b/algorithms/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..532c96eaf2863df96ec56811d4dd736c22b579d1 GIT binary patch literal 109 zcmZSn%*(a^YG+6?0~9a self.data: - if self.right is None: - self.right = Node(data) - else: - self.right.insert(data) + if self.data: + if data < self.data: + if self.left is None: + self.left = Node(data) + else: + self.left.insert(data) + elif data > self.data: + if self.right is None: + self.right = Node(data) + else: + self.right.insert(data) + else: + self.data = data def lookup(self, data, parent=None): """ @@ -60,11 +63,14 @@ def delete(self, data): children_count = node.children_count() if children_count == 0: # if node has no children, just remove it - if parent.left is node: - parent.left = None + if parent: + if parent.left is node: + parent.left = None + else: + parent.right = None + del node else: - parent.right = None - del node + self.data = None elif children_count == 1: # if node has 1 child # replace node by its child @@ -77,7 +83,11 @@ def delete(self, data): parent.left = n else: parent.right = n - del node + del node + else: + self.left = n.left + self.right = n.right + self.data = n.data else: # if node has 2 children # find its successor @@ -157,4 +167,4 @@ def children_count(self): cnt += 1 if self.right: cnt += 1 - return cnt + return cnt \ No newline at end of file diff --git a/algorithms/binary_tree.pyc b/algorithms/binary_tree.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8b7e9f12fb001212ddadf0c336f80183fcf026a7 GIT binary patch literal 3766 zcmb7H&2Ah;5bl{>&w8CT4*3BEkZ2JJR>I;ZQb36yiU=Ygq7@oPL|KR?W55&e2D}6kXTGm`c6RMZXtQ?rR{vCWb=6l@y{&&%SMLA) z^md}^PYd7I(afvpQvA16>ZvD69VvBph_SCW`faRPc7rm_8de_@pP`w%=rW~-9t8~j zTEGyJd`cR&RobQCC!QJxDs9VTN2NQvI$@V;k!SJ9)CBleo~E8TLHV<>qddSP_v>@oBq3 z>2IRLtq+xoa0f^D>d+Blkc~bWW@=Cs8bc>#VQe)?Y+0>{bgo<<$5p)VG@-7Jno~j8 z=gnGVVqad#F5x7(l1%YBa=464Hrfj5i9VX^%mq;KXuGU(yR&cJ-^`1+dK6h0>b>zJ zyNuN+%8T4a5ha@doeH{M*L&U&zhVhi*o6W=)%ORzhv6-m7whaTtLlofEp9lPTJ7Lj zyLPm} z$j}d92r>C$9?`bcxrk^a4*Il`7&@fmLysMrvRrVxL&lD{CZu6s$Sq+99BXLi96GvV z4S#3+v-S5YenRQfCMbP~35UtrCzp@=;rMxp!sTiH}kYOnW|03&dKz{ z%*nFslv*?lLx$l+G;;=>TBf(#p7S=oeF;Tkf@l+O$ABE&B0fi$eebKs_=jJSU|VXh ztEzh*=v|+w`Z1!;`P5g{L>;z}LD&-qzJ%M5T$qVk3L#a~ZS{k%4u&3wNE3)b$b=lQ zK+eD9g@o$ons~fKUQV_ZXrA)d@l*a#hcfR@sp;t{7*Zb`gx-ZYXlM=^T#W+LYx0yp zJ$yqQ2BOAA4+JeBLo6LEdv`bhvrp~o3kRb8fV-JWVG*3*-A&+xJ zd)Vdt3OY-{h2_{xk|Z;xtQJM30NH8#5&5s7Q=Ri(kAHpujQ0Gl7x);px{jWo^VZq{ z%1F-(yj8#F1Je%2)V{&-?-(Ef)#>Im^_6rZ^%daV1Bl+1SyU7toS1L2)7NChu(~fh ziu3g{JuV9f4D$F~W>Fb8^6}7cQz%T>8mQ{Gc^M8hve3w=Ys*t;+&J$>xz9+~moy8i zd9I>JdFK)xpSaBp^Yv+_x?N2&<|Vs>ecU{bjmc7-8=a>>O`gOf3a~qv;f6-Upf3oZ zljULXMLaT@lp1*tP_RJ8u3|@hzSMqmGIO1x2)d@q%%T7ZU&elve`Pc})#)K=ok1fs zx?aa8RN4)lP|In%0or_ujt<447it2<=?J?JfL!p^O@09bS7eNg)vQb1k!ROB#55N9 zrpg&+wBj`8@}jKLtZKFlFwVEK zj%uJb7zv-&} zU|oN>t}it*XPMnS1F89mSD{2)QrJb!B{`kXaMMGl0w&m1X@fpz>i2vR?`KhD3B)Mc zFVo40L#B!-O3NgQLV3V8xkKI`A hJKMe7eGSy Date: Thu, 11 Dec 2014 14:52:05 -0500 Subject: [PATCH 2/2] Oops. Getting rid of pycs --- algorithms/__init__.pyc | Bin 109 -> 0 bytes algorithms/binary_tree.pyc | Bin 3766 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 algorithms/__init__.pyc delete mode 100644 algorithms/binary_tree.pyc diff --git a/algorithms/__init__.pyc b/algorithms/__init__.pyc deleted file mode 100644 index 532c96eaf2863df96ec56811d4dd736c22b579d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmZSn%*(a^YG+6?0~9a&w8CT4*3BEkZ2JJR>I;ZQb36yiU=Ygq7@oPL|KR?W55&e2D}6kXTGm`c6RMZXtQ?rR{vCWb=6l@y{&&%SMLA) z^md}^PYd7I(afvpQvA16>ZvD69VvBph_SCW`faRPc7rm_8de_@pP`w%=rW~-9t8~j zTEGyJd`cR&RobQCC!QJxDs9VTN2NQvI$@V;k!SJ9)CBleo~E8TLHV<>qddSP_v>@oBq3 z>2IRLtq+xoa0f^D>d+Blkc~bWW@=Cs8bc>#VQe)?Y+0>{bgo<<$5p)VG@-7Jno~j8 z=gnGVVqad#F5x7(l1%YBa=464Hrfj5i9VX^%mq;KXuGU(yR&cJ-^`1+dK6h0>b>zJ zyNuN+%8T4a5ha@doeH{M*L&U&zhVhi*o6W=)%ORzhv6-m7whaTtLlofEp9lPTJ7Lj zyLPm} z$j}d92r>C$9?`bcxrk^a4*Il`7&@fmLysMrvRrVxL&lD{CZu6s$Sq+99BXLi96GvV z4S#3+v-S5YenRQfCMbP~35UtrCzp@=;rMxp!sTiH}kYOnW|03&dKz{ z%*nFslv*?lLx$l+G;;=>TBf(#p7S=oeF;Tkf@l+O$ABE&B0fi$eebKs_=jJSU|VXh ztEzh*=v|+w`Z1!;`P5g{L>;z}LD&-qzJ%M5T$qVk3L#a~ZS{k%4u&3wNE3)b$b=lQ zK+eD9g@o$ons~fKUQV_ZXrA)d@l*a#hcfR@sp;t{7*Zb`gx-ZYXlM=^T#W+LYx0yp zJ$yqQ2BOAA4+JeBLo6LEdv`bhvrp~o3kRb8fV-JWVG*3*-A&+xJ zd)Vdt3OY-{h2_{xk|Z;xtQJM30NH8#5&5s7Q=Ri(kAHpujQ0Gl7x);px{jWo^VZq{ z%1F-(yj8#F1Je%2)V{&-?-(Ef)#>Im^_6rZ^%daV1Bl+1SyU7toS1L2)7NChu(~fh ziu3g{JuV9f4D$F~W>Fb8^6}7cQz%T>8mQ{Gc^M8hve3w=Ys*t;+&J$>xz9+~moy8i zd9I>JdFK)xpSaBp^Yv+_x?N2&<|Vs>ecU{bjmc7-8=a>>O`gOf3a~qv;f6-Upf3oZ zljULXMLaT@lp1*tP_RJ8u3|@hzSMqmGIO1x2)d@q%%T7ZU&elve`Pc})#)K=ok1fs zx?aa8RN4)lP|In%0or_ujt<447it2<=?J?JfL!p^O@09bS7eNg)vQb1k!ROB#55N9 zrpg&+wBj`8@}jKLtZKFlFwVEK zj%uJb7zv-&} zU|oN>t}it*XPMnS1F89mSD{2)QrJb!B{`kXaMMGl0w&m1X@fpz>i2vR?`KhD3B)Mc zFVo40L#B!-O3NgQLV3V8xkKI`A hJKMe7eGSy