Мне тяжело с обходом дерева, и поэтому избегайте его, как чумы ... обычно.
У меня есть класс, который вроде (немного упрощенная версия здесь, но функциональното же самое) как:
class Branch(object):
def __init__(self, title, parent=None):
self.title = title
self.parent = parent
У меня есть словарь из набора Branch
экземпляров, названия каждого из которых являются ключами:
tree = {'Foo Branch': foo, 'Sub-Foo Branch': sub_foo, 'Bar Branch': bar}
Теперь я знаючто существуют сложные алгоритмы для обеспечения эффективного обхода (например, MPTT и др.), особенно для использования в проектах на основе баз данных, где эффективность важнее всего.Я вообще не использую базу данных, только простые объекты в памяти.
Учитывая title
из Branch
, мне нужно получить list
всех потомков этой ветви (потомков), дети дети, так далее) от tree
, поэтому:
- Вы все еще рекомендовали бы использовать сложный (для моего безалкогольного мозга:) алгоритм, такой как MPTT дляэффективность в моем случае, или есть простой способ добиться этого в одной функции?
- Если да, то какую из них вы бы порекомендовали, зная, что я не использую базу данных?
- Может лиВы приводите пример, или это намного больше, чем я думаю?
Примечание : Это не домашнее задание.Я не в школе.Я действительно так плохо разбираюсь в алгоритмах.Я использовал Django MPTT для проекта, который требовал деревьев, хранящихся в БД ... но все еще не очень хорошо это понимал.