Поиск слов в бинарном дереве поиска по первым буквам
У меня есть функция поиска слова по первым символам в бинарном дереве поиска, но она находит только первое слово и останавливается. Как мне сделать вывод всех слов, которые начинаются на key ?
def search(tree, key):
while True:
try:
if tree.value.startswith(key):
print(tree.value, tree.count)
return
elif key < tree.value:
tree = tree.left
elif key > tree.value:
tree = tree.right
except AttributeError:
print('Word' + key + ' is not found')
return
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Ну, вариант с минимальными изменениями, наверное, такой:
if tree.value.startswith(key):
print(tree.value, tree.count)
search(tree.left, key) # <--
search(tree.right, key) # <--
return
По-хорошему нужно ещё уровень рекурсии отслеживать, передавая ещё один параметр в функцию и при exception ничего не выводить, если мы не на самом верхнем уровне вызова функции.
Но вообще хотелось бы данные с примером дерева. Всё может быть и не настолько просто.