我在树的遍历方面遇到了困难,所以通常会像瘟疫一样避免它...
我有一个类,有点像这个简化版本(但功能上相同):
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等),特别是用于需要最高效率的数据库驱动项目。但我根本没有使用数据库,只使用简单的内存对象。
给定一个“Branch”的“title”,我需要从“tree”中获取该分支的所有后代(子代、子孙等)的列表,因此:
1. 在我的情况下,您仍然建议使用像MPTT这样复杂的算法以实现效率,还是有一种简单的方式可以通过单个函数实现?
2. 如果是这样,请问您会建议哪种算法,知道我不使用数据库?
3. 您能提供一个示例吗,还是它比我想象的要大得多?
注意:这不是作业任务。我不在学校里。我只是在算法方面很差。我曾经为一个需要存储在数据库中的树形结构项目使用了Django MPTT……但仍然不太理解它。