MCPcopy Index your code
hub / github.com/Jack-Lee-Hiter/AlgorithmsByPython / remove

Method remove

AVL.py:231–267  ·  view source on GitHub ↗
(self, currentNode)

Source from the content-addressed store, hash-verified

229 return current
230
231 def remove(self, currentNode):
232 if currentNode.isLeaf(): # leaf
233 if currentNode == currentNode.parent.leftChild:
234 currentNode.parent.leftChild = None
235 else:
236 currentNode.parent.rightChild = None
237 elif currentNode.hasBothChildren(): # interior
238 succ = currentNode.findSuccessor()
239 succ.spliceOut()
240 currentNode.key = succ.key
241 currentNode.payload = succ.payload
242
243 else: # this node has one child
244 if currentNode.hasLeftChild():
245 if currentNode.isLeftChild():
246 currentNode.leftChild.parent = currentNode.parent
247 currentNode.parent.leftChild = currentNode.leftChild
248 elif currentNode.isRightChild():
249 currentNode.leftChild.parent = currentNode.parent
250 currentNode.parent.rightChild = currentNode.leftChild
251 else:
252 currentNode.replaceNodeData(currentNode.leftChild.key,
253 currentNode.leftChild.payload,
254 currentNode.leftChild.leftChild,
255 currentNode.leftChild.rightChild)
256 else:
257 if currentNode.isLeftChild():
258 currentNode.rightChild.parent = currentNode.parent
259 currentNode.parent.leftChild = currentNode.rightChild
260 elif currentNode.isRightChild():
261 currentNode.rightChild.parent = currentNode.parent
262 currentNode.parent.rightChild = currentNode.rightChild
263 else:
264 currentNode.replaceNodeData(currentNode.rightChild.key,
265 currentNode.rightChild.payload,
266 currentNode.rightChild.leftChild,
267 currentNode.rightChild.rightChild)
268
269
270

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