[11] adding bst_delete() and bst_list_all

This commit is contained in:
lukovnikovde 2026-05-02 09:58:29 +00:00
parent b647f5af59
commit cf54fc4931

View File

@ -188,7 +188,7 @@ def HashTable(buckest):
for _ in range(2):
name = Name[rnd.randint(0, len(Name) - 1)]
head = ht_delete(buckest, name)
buckest = ht_delete(buckest, name)
print(buckest)
print(name, ":", ht_find(buckest, name))
@ -204,7 +204,7 @@ def bst_insert(root, name, phone):
root = {'name': name, 'phone': phone, 'left': None, 'right': None}
return root
while True:
node = shash_key(running['name'])
node = hash_key(running['name'])
sheet = hash_key(name)
if node < sheet:
if running['right'] is None:
@ -226,7 +226,7 @@ def bst_find(root, name):
while running is not None:
node = hash_key(running['name'])
sheet = hadh_key(name)
sheet = hash_key(name)
if name == running['name']:
return running['phone']
elif node < sheet:
@ -235,6 +235,58 @@ def bst_find(root, name):
running = running['left']
return None
def bst_list_all(root, name_list = []):
if root is None:
return
name_list.append((root['name'], root['phone']))
bst_list_all(root['left'], name_list)
bst_list_all(root['right'], name_list)
name_list = sort_list(name_list)
return name_list
def bst_delete(root, name):
running = root
while running is not None:
node = hash_key(running['name'])
sheet = hash_key(name)
if name == running['name']:
break
elif node < sheet:
old_running = running
flag = 1
running = running['right']
else:
old_running = running
flag = 0
running = running['left']
step = ['left', 'right']
if running['left'] is None:
old_running[step[flag]] = running['right']
return root
if running['right'] is None:
old_running[step[flag]] = running['left']
return root
node_delete = running
old_running = running
running = running['right']
while running['left'] is not None:
old_running = running
running = running['left']
node_delete['name'] = running['name']
node_delete['phone'] = running['phone']
old_running['left'] = None
return root
#################################################################################################
def BinarySearchTree(root):
@ -261,6 +313,23 @@ def BinarySearchTree(root):
name = Name[i]
print(name, ":", bst_find(root, name))
print("======== END TESTING =============\n\n")
print('===================== TESTING BST_LIST_ALL =============')
name_list = bst_list_all(root)
print(*name_list)
print("======== END TESTING =============\n\n")
print('========== TESTING HT_DELETE ==========')
for _ in range(2):
name = Name[rnd.randint(0, len(Name) - 1)]
root = bst_delete(root, name)
print(root)
print(name, ":", bst_find(root, name))
print("========= END TESTING ==============\n\n")
################################################################################################