Рекурсивний обхід дерева
Реалізуй генераторну функцію walk_tree
, яка рекурсивно проходить дерево у вигляді вкладених словників (dict) та повертає всі ключі у порядку глибини (depth-first traversal).
Використовуй конструкцію yield from
для делегування ітерації вкладеним генераторам.
Сигнатура функції:
def walk_tree(data: dict) -> Iterator[str]:
Приклад:
>>> data = {
... "a": {
... "b": {
... "c": 1
... }
... },
... "d": 2
... }
>>> list(walk_tree(data))
['a', 'b', 'c', 'd']
>>> data = {
... "x": {"y": {"z": {}}},
... "m": {"n": 42}
... }
>>> list(walk_tree(data))
['x', 'y', 'z', 'm', 'n']
Підказки до реалізації
- Перевіряй, чи значення є словником (
dict
), і якщо так — рекурсивно обходь його. - Для рекурсивного виклику використовуй
yield from
. - Не враховуй значення — лише ключі.