fix(ranked_tree): transplant by double-delete

Signed-off-by: Matej Focko <mfocko@redhat.com>
This commit is contained in:
Matej Focko 2022-05-07 15:39:07 +02:00
parent d8a746268b
commit f67468b637
Signed by: mfocko
GPG key ID: 7C47D46246790496

View file

@ -119,17 +119,9 @@ class RankedTree(Generic[T]):
self._transplant(node, node.left) self._transplant(node, node.left)
else: else:
n = Node.minimum(node.right) n = Node.minimum(node.right)
y, parent = None, (n.parent if n.parent is not node else n) node.value = n.value
n.value = None
if n.parent is not node: return self._delete_node(n)
parent = n.right if n.right else n.parent
self._transplant(n, n.right)
n.right = node.right
n.right.parent = n
self._transplant(node, n)
n.left = node.left
n.left.parent = n
return (y, parent) return (y, parent)