私は木の横断に苦労しているので、疫病のようにそれを避けてください...通常。
私は次のような種類のクラスを持っています(ここでは少し簡略化されたバージョンですが、機能的には同じです)。
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のような複雑な(私のアルゴリズムのない脳:)アルゴリズムを使用することをお勧めしますか、それとも単一の関数でこれを実現する簡単な方法がありますか?
- もしそうなら、私がデータベースを使用していないことを知っているので、どれをお勧めしますか?
- 例を挙げていただけますか、それとも私が思っているよりもはるかに大きいですか?
注:これは宿題ではありません。私は学校にいません。私は本当にアルゴリズムが苦手です。DBに保存されたツリーを必要とするプロジェクトにDjangoMPTTを使用しましたが、それでもよく理解できていません。