From f67468b637cb3cf87509859664cd45e85f12ff8a Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Sat, 7 May 2022 15:39:07 +0200 Subject: [PATCH] fix(ranked_tree): transplant by double-delete Signed-off-by: Matej Focko --- ranked_tree.py | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/ranked_tree.py b/ranked_tree.py index 261c9ed..42358f0 100644 --- a/ranked_tree.py +++ b/ranked_tree.py @@ -119,17 +119,9 @@ class RankedTree(Generic[T]): self._transplant(node, node.left) else: n = Node.minimum(node.right) - y, parent = None, (n.parent if n.parent is not node else n) - - if n.parent is not node: - 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 + node.value = n.value + n.value = None + return self._delete_node(n) return (y, parent)