Войти Создать аккаунт

Рекурсия · 9 из 19

Обход без списка

Древо разрослось: в нём под сорок тысяч человек, выгруженных из архива. Собирать все имена в список ради того, чтобы показать первые двадцать на экране, незачем — и памяти на это нет.

Что сделать

Показывайте имена из огромного древа по одному — не собирая сорок тысяч в список.

Что приходит

  • chelovek — словарь с ключами "imya" и "deti"

Что вернуть

Генератор: отдаёт сначала самого человека, потом всё поддерево первого ребёнка, потом второго и так далее; до первой просьбы обход не начинается.

Допишите функцию vse_imena в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

Перед вызовом
drevo = {"imya": "Пётр", "deti": [
    {"imya": "Иван", "deti": [{"imya": "Фёдор", "deti": []}]},
    {"imya": "Мария", "deti": []},
]}
Вызов
list(vse_imena(drevo))
Вернуть
['Пётр', 'Иван', 'Фёдор', 'Мария']
Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.