MCPcopy Create free account
hub / github.com/Jack-Lee-Hiter/AlgorithmsByPython / remove

Method remove

BinarySearchTree.py:166–202  ·  view source on GitHub ↗
(self, currentNode)

Source from the content-addressed store, hash-verified

164 return current
165
166 def remove(self, currentNode):
167 if currentNode.isLeaf(): # leaf
168 if currentNode == currentNode.parent.leftChild:
169 currentNode.parent.leftChild = None
170 else:
171 currentNode.parent.rightChild = None
172 elif currentNode.hasBothChildren(): # interior
173 succ = currentNode.findSuccessor()
174 succ.spliceOut()
175 currentNode.key = succ.key
176 currentNode.payload = succ.payload
177
178 else: # this node has one child
179 if currentNode.hasLeftChild():
180 if currentNode.isLeftChild():
181 currentNode.leftChild.parent = currentNode.parent
182 currentNode.parent.leftChild = currentNode.leftChild
183 elif currentNode.isRightChild():
184 currentNode.leftChild.parent = currentNode.parent
185 currentNode.parent.rightChild = currentNode.leftChild
186 else:
187 currentNode.replaceNodeData(currentNode.leftChild.key,
188 currentNode.leftChild.payload,
189 currentNode.leftChild.leftChild,
190 currentNode.leftChild.rightChild)
191 else:
192 if currentNode.isLeftChild():
193 currentNode.rightChild.parent = currentNode.parent
194 currentNode.parent.leftChild = currentNode.rightChild
195 elif currentNode.isRightChild():
196 currentNode.rightChild.parent = currentNode.parent
197 currentNode.parent.rightChild = currentNode.rightChild
198 else:
199 currentNode.replaceNodeData(currentNode.rightChild.key,
200 currentNode.rightChild.payload,
201 currentNode.rightChild.leftChild,
202 currentNode.rightChild.rightChild)
203
204
205

Callers 1

deleteMethod · 0.95

Calls 8

isLeafMethod · 0.45
hasBothChildrenMethod · 0.45
findSuccessorMethod · 0.45
spliceOutMethod · 0.45
hasLeftChildMethod · 0.45
isLeftChildMethod · 0.45
isRightChildMethod · 0.45
replaceNodeDataMethod · 0.45

Tested by

no test coverage detected