Построитель деревьев Испытание курса: Python: Введение в ООП

src/solution.py

Вам нужно реализовать класс TreeBuilder. Этот класс призван давать возможность собирать древовидные структуры пошагово. Метод add добавляет "лист" в текущий узел дерева:

>>> tree = TreeBuilder()
>>> tree.add('1st')

Свойство structure возвращает текущую структуру дерева:

>>> tree.structure
['1st']

А использование экземпляра в качестве менеджера контекста добавляет вложенный узел дерева, делая его текущим в рамках контекста. При этом "спускаться вниз" можно на произвольную глубину:

>>> with tree:
...     tree.add('2nd')
...     with tree:
...         tree.add('3rd')
...     tree.add('4th')
...
>>> tree.structure
['1st', ['2nd', ['3rd'], '4th']]

Если в рамках контекста не было добавлено ни одного "листа", то весь узел не должен появляться в итоговой структуре:

>>> tree.structure
['1st', ['2nd', ['3rd'], '4th']]
>>> with tree:
...     pass
...
>>> tree.structure
['1st', ['2nd', ['3rd'], '4th']]  # пустой список не был добавлен!

Структура дерева выводится в виде вложенных списков.

Пример целиком

>>> tree = TreeBuilder()
>>> tree.structure
[]
>>> tree.add('1st')
>>> tree.structure
['1st']
>>> with tree:
...     tree.add('2nd')
...     with tree:
...         tree.add('3rd')
...     tree.add('4th')
...     with tree:
...         pass
...
>>> tree.structure
['1st', ['2nd', ['3rd'], '4th']]
Успешных завершений: 62%

Для полного доступа к испытанию нужна профессиональная подписка

Профессиональная подписка откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, даст возможность обращаться за помощью к менторам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
115
курсов
892
упражнения
2241
час теории
3196
тестов

Последние код-ревью

Автор Дата обновления Версий
sharknoise 25 авг., 11:09 1
vitaliipaprotskyi 21 авг., 18:11 1
user-110df8b01617705f 05 авг., 16:55 1
mirash91 30 июля, 09:18 1
yuliazzz 03 июня, 10:33 1