Поиск слов в бинарном дереве поиска по первым буквам

У меня есть функция поиска слова по первым символам в бинарном дереве поиска, но она находит только первое слово и останавливается. Как мне сделать вывод всех слов, которые начинаются на 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 ничего не выводить, если мы не на самом верхнем уровне вызова функции.

Но вообще хотелось бы данные с примером дерева. Всё может быть и не настолько просто.

→ Ссылка