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