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

Python: Введение в ООП 3 сообщения
Обновлено: 31 марта, 12:50
76
Студентов
59%
Завершения

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']]

Для полного доступа к испытанию нужен базовый план

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

Получить доступ
900
упражнений
2000+
часов теории
3200
тестов

Впечатления

Аватар пользователя Mikhail Korolkevich
Mikhail Korolkevich 30 июля 2020

Ахтунг просто! Два дня бился над испытанием :D Спасибо за интересную задачку)