def _delete_recursive(self, node, key): if node is …

chryptof ·

def _delete_recursive(self, node, key):
if node is None:
return node
if key < node.key:
node.left = self._delete_recursive(node.left, key)
elif key > node.key:
node.right = self._delete_recursive(node.right, key)
else:
# Node with only one child or no child
if node.left is None:
return node.right
elif node.right is None:
return node.left
# Node with two children
min_larger_node = self._get_min(node.right)
node.key = min_larger_node.key
node.right = self._delete_recursive(node.right, min_larger_node.key)
return node