(self, currentNode)
| 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 |
no test coverage detected