Реализован bst_insert
This commit is contained in:
parent
9bdefcc922
commit
b383ed1cdc
|
|
@ -5,16 +5,37 @@
|
||||||
{'name': 'Имя', 'phone': '123', 'left': None, 'right': None}.
|
{'name': 'Имя', 'phone': '123', 'left': None, 'right': None}.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def bst_insert(root, name, phone):
|
def bst_insert(root: dict|None, name: str, phone: str) -> dict:
|
||||||
"""Рекурсивно или итеративно вставляет,
|
"""Итеративно вставляет, возвращает новый корень (если корень меняется)."""
|
||||||
возвращает новый корень (если корень меняется)."""
|
if root == None:
|
||||||
|
return {'name': name, 'phone': phone, 'left': None, 'right': None}
|
||||||
|
|
||||||
|
# '674' < '722' == True, lol
|
||||||
|
current = root
|
||||||
|
while True:
|
||||||
|
if current['name'] == name:
|
||||||
|
current['phone'] == phone
|
||||||
|
elif current['name'] < name:
|
||||||
|
if current['left'] == None:
|
||||||
|
current['left'] = bst_insert(None, name, phone)
|
||||||
|
return root
|
||||||
|
else:
|
||||||
|
current = current['left']
|
||||||
|
else:
|
||||||
|
if current['right'] == None:
|
||||||
|
current['right'] = bst_insert(None, name, phone)
|
||||||
|
return root
|
||||||
|
else:
|
||||||
|
current = current['right']
|
||||||
|
# Увы, это самый лаконичный вариант, который я придумал.
|
||||||
|
|
||||||
def bst_find(root, name):
|
|
||||||
...
|
|
||||||
|
|
||||||
def bst_delete(root, name):
|
def bst_find(root: dict|None, name: str) -> str|None:
|
||||||
|
"""Поиск в ширину."""
|
||||||
|
|
||||||
|
def bst_delete(root: dict, name: str) -> dict:
|
||||||
"""Удаление, возвращает новый корень."""
|
"""Удаление, возвращает новый корень."""
|
||||||
|
|
||||||
def bst_list_all(root):
|
def bst_list_all(root: dict) -> list:
|
||||||
"""Центрированный обход.
|
"""Центрированный обход.
|
||||||
Рекурсивно собирает записи в отсортированном порядке."""
|
Рекурсивно собирает записи в отсортированном порядке."""
|
||||||
Loading…
Reference in New Issue
Block a user