From c76eb6f91b187ce026bd74dc937d528e0d577c63 Mon Sep 17 00:00:00 2001 From: konnovaea Date: Sun, 26 Apr 2026 20:49:48 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=B2=D0=BE=D0=B8=D1=87=D0=BD=D0=BE?= =?UTF-8?q?=D0=B5=20=D0=B4=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=20=D0=B8=D1=81?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=202.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- konnovaea/phonebook.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/konnovaea/phonebook.py b/konnovaea/phonebook.py index d38d076..169190e 100644 --- a/konnovaea/phonebook.py +++ b/konnovaea/phonebook.py @@ -120,22 +120,29 @@ def _bst_find_mine(node): return current def bst_delete(root, name): + if root is None: return None + if name < root['name']: root['left'] = bst_delete(root['left'], name) elif name > root['name']: root['right'] = bst_delete(root['right'], name) - else: - if root['left'] is None: - return root['right'] - elif root['right'] is None: - return root['left'] + return root + + if root['left'] is None: + return root['right'] + elif root['right'] is None: + return root['left'] - successor = _bst_find_mine(root['right']) - root['name'] = successor['name'] - root['phone'] = successor['phone'] - root['right'] = bst_delete(root['right'], successor['name']) + current = root['right'] + while current['left'] is not None: + current = current['left'] + + root['name'] = current['name'] + root['phone'] = current['phone'] + + root['right'] = bst_delete(root['right'], current['name']) return root