Испытания

Построитель деревьев

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']]
Успешных завершений: 50%

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

Автор Дата обновления Версий
kseniya_pr 23 мая, 08:41 1
pavelgoshurenko 20 апр., 12:06 1
ivanich-spb 15 апр., 00:30 1
alexur 12 марта, 14:41 1