Рекурсия · 7 из 19
Путь до человека
«А Серафима нам кто?» — ответ «есть такая» дядю Мишу не устраивает. Ему нужна цепочка от родоначальника вниз до неё: так на плакате рисуют линию и так объясняют родство за столом.
Что сделать
Проведите на плакате линию родства — от родоначальника вниз до нужного человека.
Что приходит
chelovek— словарь с ключами"imya"и"deti"imya— до кого вести путь
Что вернуть
Список имён от chelovek вниз до imya, оба конца включительно; такого нет — None; имя встречается не раз — первое при обходе.
Допишите функцию put_do в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
У Петра дети Иван и Мария, у Ивана — Серафима. Путь до Серафимы — ["Пётр", "Иван", "Серафима"]. Обход идёт так: сам человек, потом всё поддерево первого ребёнка, потом второго.
drevo = {"imya": "Пётр", "deti": [
{"imya": "Иван", "deti": [{"imya": "Серафима", "deti": []}]},
{"imya": "Мария", "deti": []},
]}
put_do(drevo, "Серафима")
['Пётр', 'Иван', 'Серафима']
Функция принимает человека (словарь с ключами «imya» и «deti») и искомое имя (строка). Возвращает список имён от этого человека вниз до искомого, включительно с обоих концов. Если искомого в древе нет — возвращается None. Если искомое имя встречается несколько раз, берётся первое найденное при обходе: сам человек, затем его дети слева направо, и у каждого сначала всё его поддерево.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.